- Media information (needs mediainfo/exiftool)
- Convenience
- 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)
- Show directories in custom color (default: blue)
- Spawn a subshell in the current directory
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
- - 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
- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) _again_ to copy the paths and exit the selection mode
To copy multiple file paths the selection mode should be enabled using \fI^Y\fR.
In this mode it's possible to
.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
(2) navigate to another file in the same directory to select a range of files.
.Pp
To list the file paths copied to memory press \fIy\fR.
.Sh ENVIRONMENT
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
\fBNNN_BMS:\fR bookmark string as \fIkey_char:location\fR pairs (max 10) separated by
\fI;\fR:
files.
.Bd -literal
export NNN_USE_EDITOR=1
-
- NOTE: Arguments to the editor should be combined together, e.g.,
-
- export EDITOR='vim -xR'
.Ed
.Pp
\fBNNN_IDLE_TIMEOUT:\fR set idle timeout (in seconds) to invoke terminal locker.
/* Clear screen */
erase();
+
+#ifdef DIR_LIMITED_COPY
if (cfg.copymode)
if (g_crc != crc8fast((uchar *)dents, ndents * sizeof(struct entry))) {
cfg.copymode = 0;
DPRINTF_S("selection off");
}
+#endif
/* Fail redraw if < than 11 columns, context info prints 10 chars */
if (COLS < 11) {
if (cfg.curctx == r)
continue;
+#ifdef DIR_LIMITED_COPY
g_crc = 0;
+#endif
/* Save current context */
xstrlcpy(g_ctx[cfg.curctx].c_name, dents[cur].name, NAME_MAX + 1);
}
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) {
copyendid = copystartid;
copystartid = cur;