mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 05:41:31 +00:00
Fix #156: Support selection across directories, contexts
This commit is contained in:
parent
50a4449417
commit
0afb792291
|
@ -103,7 +103,8 @@ It runs on Linux, OS X, Raspberry Pi, Cygwin, Linux subsystem for Windows and Te
|
||||||
- Media information (needs mediainfo/exiftool)
|
- Media information (needs mediainfo/exiftool)
|
||||||
- Convenience
|
- Convenience
|
||||||
- Create, rename files and directories
|
- Create, rename files and directories
|
||||||
- Select multiple files; copy, move, delete selection
|
- Select files across directories
|
||||||
|
- Copy, move, delete selection
|
||||||
- Batch rename/move/delete (needs vidir)
|
- Batch rename/move/delete (needs vidir)
|
||||||
- Show directories in custom color (default: blue)
|
- Show directories in custom color (default: blue)
|
||||||
- Spawn a subshell in the current directory
|
- Spawn a subshell in the current directory
|
||||||
|
@ -374,7 +375,7 @@ Use <kbd>^K</kbd> to copy the absolute path of the file under the cursor.
|
||||||
To copy multiple absolute file paths:
|
To copy multiple absolute file paths:
|
||||||
|
|
||||||
- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) to enter selection mode. In this mode it's possible to
|
- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) to enter selection mode. In this mode it's possible to
|
||||||
- cherry-pick individual files one by one by pressing <kbd>^K</kbd> on each entry; or,
|
- cherry-pick individual files one by one by pressing <kbd>^K</kbd> on each entry (works across directories and contexts); or,
|
||||||
- navigate to another file in the same directory to select a range of files
|
- navigate to another file in the same directory to select a range of files
|
||||||
- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) _again_ to copy the paths and exit the selection mode
|
- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) _again_ to copy the paths and exit the selection mode
|
||||||
|
|
||||||
|
|
11
nnn.1
11
nnn.1
|
@ -253,7 +253,7 @@ NNN_COPIER is set (see ENVIRONMENT section below).
|
||||||
To copy multiple file paths the selection mode should be enabled using \fI^Y\fR.
|
To copy multiple file paths the selection mode should be enabled using \fI^Y\fR.
|
||||||
In this mode it's possible to
|
In this mode it's possible to
|
||||||
.Pp
|
.Pp
|
||||||
(1) cherry-pick individual files one by one by pressing <kbd>^K</kbd> on each entry; or,
|
(1) cherry-pick individual files one by one by pressing <kbd>^K</kbd> on each entry (works across directories and contexts); or,
|
||||||
.br
|
.br
|
||||||
(2) navigate to another file in the same directory to select a range of files.
|
(2) navigate to another file in the same directory to select a range of files.
|
||||||
.Pp
|
.Pp
|
||||||
|
@ -263,7 +263,10 @@ be copied, moved or removed using respective keyboard shortcuts.
|
||||||
To list the file paths copied to memory press \fIy\fR.
|
To list the file paths copied to memory press \fIy\fR.
|
||||||
.Sh ENVIRONMENT
|
.Sh ENVIRONMENT
|
||||||
The SHELL, EDITOR (VISUAL, if defined) and PAGER environment variables take precedence
|
The SHELL, EDITOR (VISUAL, if defined) and PAGER environment variables take precedence
|
||||||
when dealing with the !, e and p commands respectively.
|
when dealing with the !, e and p commands respectively. A single combination to arguments is supported, e.g.:
|
||||||
|
.Bd -literal
|
||||||
|
export EDITOR='vim -xR'
|
||||||
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
\fBNNN_BMS:\fR bookmark string as \fIkey_char:location\fR pairs (max 10) separated by
|
\fBNNN_BMS:\fR bookmark string as \fIkey_char:location\fR pairs (max 10) separated by
|
||||||
\fI;\fR:
|
\fI;\fR:
|
||||||
|
@ -277,10 +280,6 @@ when dealing with the !, e and p commands respectively.
|
||||||
files.
|
files.
|
||||||
.Bd -literal
|
.Bd -literal
|
||||||
export NNN_USE_EDITOR=1
|
export NNN_USE_EDITOR=1
|
||||||
|
|
||||||
NOTE: Arguments to the editor should be combined together, e.g.,
|
|
||||||
|
|
||||||
export EDITOR='vim -xR'
|
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
\fBNNN_IDLE_TIMEOUT:\fR set idle timeout (in seconds) to invoke terminal locker.
|
\fBNNN_IDLE_TIMEOUT:\fR set idle timeout (in seconds) to invoke terminal locker.
|
||||||
|
|
13
src/nnn.c
13
src/nnn.c
|
@ -2397,11 +2397,14 @@ static void redraw(char *path)
|
||||||
|
|
||||||
/* Clear screen */
|
/* Clear screen */
|
||||||
erase();
|
erase();
|
||||||
|
|
||||||
|
#ifdef DIR_LIMITED_COPY
|
||||||
if (cfg.copymode)
|
if (cfg.copymode)
|
||||||
if (g_crc != crc8fast((uchar *)dents, ndents * sizeof(struct entry))) {
|
if (g_crc != crc8fast((uchar *)dents, ndents * sizeof(struct entry))) {
|
||||||
cfg.copymode = 0;
|
cfg.copymode = 0;
|
||||||
DPRINTF_S("selection off");
|
DPRINTF_S("selection off");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Fail redraw if < than 11 columns, context info prints 10 chars */
|
/* Fail redraw if < than 11 columns, context info prints 10 chars */
|
||||||
if (COLS < 11) {
|
if (COLS < 11) {
|
||||||
|
@ -2823,7 +2826,9 @@ nochange:
|
||||||
if (cfg.curctx == r)
|
if (cfg.curctx == r)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
#ifdef DIR_LIMITED_COPY
|
||||||
g_crc = 0;
|
g_crc = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Save current context */
|
/* Save current context */
|
||||||
xstrlcpy(g_ctx[cfg.curctx].c_name, dents[cur].name, NAME_MAX + 1);
|
xstrlcpy(g_ctx[cfg.curctx].c_name, dents[cur].name, NAME_MAX + 1);
|
||||||
|
@ -3072,6 +3077,14 @@ nochange:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ncp) { /* Handle range selection */
|
if (!ncp) { /* Handle range selection */
|
||||||
|
#ifndef DIR_LIMITED_COPY
|
||||||
|
if (g_crc != crc8fast((uchar *)dents, ndents * sizeof(struct entry))) {
|
||||||
|
cfg.copymode = 0;
|
||||||
|
printmsg("range error: dir/content changed");
|
||||||
|
DPRINTF_S("range error: dir/content changed");
|
||||||
|
goto nochange;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (cur < copystartid) {
|
if (cur < copystartid) {
|
||||||
copyendid = copystartid;
|
copyendid = copystartid;
|
||||||
copystartid = cur;
|
copystartid = cur;
|
||||||
|
|
Loading…
Reference in a new issue