Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NNN(1)			    General Commands Manual			NNN(1)

NAME
       nnn -- The unorthodox terminal file manager.

SYNOPSIS
       nnn  [-aAcCdDeEfgHJKnQrRSuUVxz0h]  [-b key] [-F val] [-l	val] [-p file]
	   [-P key] [-s	name] [-t secs]	[-T key] [PATH]

DESCRIPTION
       nnn (Nnn's Not Noice) is	a performance-optimized,  feature-packed  fork
       of  noice http://git.2f30.org/noice/ with seamless desktop integration,
       simplified navigation, type-to-nav mode with dir	auto-enter, disk usage
       analyzer	mode, bookmarks, contexts, application launcher, familiar nav-
       igation shortcuts, subshell spawning and	much more. It remains a	simple
       and efficient file manager that stays out of your way.

       nnn opens the current working directory if PATH is  not	specified.  If
       PATH  is	specified and it exists, nnn will open it. If the PATH doesn't
       exist and ends with a /,	nnn will attempt to create the directory  tree
       and open	it. Otherwise, PATH is considered a path to a regular file and
       nnn  attempts  to  create the complete directory	tree to	the file, open
       the parent directory and	prompt to create the new file in it  with  the
       base filename.

KEYBINDS
       Press `?' in nnn	to see the list	of keybinds.

OPTIONS
       nnn supports the	following options:

       -a
	       auto-setup  temporary  NNN_FIFO	(refer to the ENVIRONMENT sec-
       tion)

       -A
	       disable directory auto-enter on unique filter match

       -b key
	       specify bookmark	key to open

       -B
	       use bsdtar for archives (default: atool)

       -c
	       indicates that the opener is a cli-only opener (overrides -e)

       -C
	       8-color scheme -	color directories  by  context,	 disable  file
       colors

       -d
	       detail mode

       -D
	       show directories	in context color with NNN_FCOLORS set

       -e
	       open text files in $VISUAL (else	$EDITOR, fallback vi) [prefer-
       ably CLI]

       -E
	       use $EDITOR for internal	undetached edits

       -f
	       use history file

       -F val
	       fifo notification mode
	       0: notify as previewer, 1: notify as explorer

       -g
	       use regex filters instead of substring match

       -H
	       show hidden files

       -i
	       show current file information in	info bar (may be slow)

       -J
	       disable auto-advance on selection
	       (eg.  selecting an entry	will no	longer move cursor to the next
       entry)

       -K
	       test for	keybind	collision and exit

       -l val
	       number of lines to move per mouse wheel scroll

       -n
	       start in	type-to-nav mode

       -o
	       open files only on Enter	key

       -p file
	       copy (or	pick) selection	to file, or stdout if file='-'

       -P key
	       specify plugin key to run

       -Q
	       disable confirmation on quit with multiple contexts active

       -r
	       show cp,	mv progress
	       (Linux-only, needs advcpmv; ^T shows the	progress on BSD/macOS)

       -R
	       disable rollover	at edges (eg. pressing down while on the last
	       entry will no  longer  move  cursor  to	the  first  entry  and
       vice-versa)

       -s name
	       load a session by name

       -S
	       persistent session

       -t secs
	       idle timeout in seconds to lock terminal

       -T key
	       sort order (refer to the	SORTING	section)
	       keys:  'a'pparent  disk	usage  /  'd'isk usage / 'e'xtension /
       'r'everse / 's'ize / 't'ime / 'v'ersion
	       capitalize to reverse (except 'r')

       -u
	       use selection if	available, don't prompt	to choose between  se-
       lection and hovered entry

       -U
	       show user and group names in status bar

       -V
	       show version and	exit

       -x
	       show notifications on selection cp, mv, rm completion (requires
       the .ntfy plugin)
	       copy  path to system clipboard on selection (requires the .cbcp
       plugin)
	       show xterm title	(if non-picker mode)

       -z
	       use fuzzy filters (fuzzy	match: all characters in filter	appear
       in order)

       -0
	       use null	separator (instead of newline) to separate file	 paths
       in picker mode outout

       -h
	       show program help and exit

CONFIGURATION
       There is	no configuration file. Associated files	are at

       ${XDG_CONFIG_HOME:-$HOME/.config}/nnn/

       Configuration  is  done using a few optional (set if you	need) environ-
       ment variables. Refer to	the ENVIRONMENT	section.

       nnn uses	xdg-open (on Linux), open(1) (on macOS), cygstart on  (Cygwin)
       and  open on (Haiku) as the desktop opener. It's	also possible to spec-
       ify a custom opener. Refer to the ENVIRONMENT section.

CONTEXTS
       Open multiple locations with 8 contexts.	The status is shown in the top
       left corner:

       - the current context is	in reverse video
       - other active contexts are underlined
       - rest are inactive

       A new context copies the	state of the previous  context.	 Each  context
       can have	its own	color. Refer to	the ENVIRONMENT	section.

SESSIONS
       Sessions	are a way to save and restore states of	work. A	session	stores
       the  settings and contexts. Sessions can	be loaded at runtime or	with a
       program option.

       - When a	session	is loaded at runtime, the last working state is	 saved
       automatically  to  a dedicated "auto session" session file. Session op-
       tion restore would restore the "auto session".
       - The persistent	session	option is global. If it	is used, the last  ac-
       tive session will be updated with the final state at program quit.
       -  The  "auto session" is used in persistent session mode if no session
       is active.
       - Listing input stream and opening a bookmark by	key have a higher pri-
       ority to	session	options	(-s/-S).

       All the session files are located by session name in the	directory

       ${XDG_CONFIG_HOME:-$HOME/.config}/nnn/sessions

       "@" is the "auto	session" file.

FILTERS
       Filters are strings (or regex patterns) to find matching	entries	in the
       current directory instantly (search-as-you-type). Matches are  case-in-
       sensitive  by  default. The last	filter in each context is persisted at
       runtime or in saved sessions.
       When there's a unique match and it's a directory, nnn auto  enters  the
       directory. Use the relevant program option to disable this.

       Special keys at filter prompt:

       --------	+ ---------------------------------------
	 Key	|		 Function
       --------	+ ---------------------------------------
	^char	| Usual	keybind	functionality
	Esc	| Exit filter prompt but skip dir refresh
	Alt+Esc	| Unfilter, quit context
       --------	+ ---------------------------------------

       Special keys at empty filter prompt:

       ------ +	-------------------------------------
	 Key  |		       Function
       ------ +	-------------------------------------
	  ?   |	Show help and config screen
	  /   |	Toggle between string, fuzzy, regex
	  :   |	Toggle case-sensitivity
	 ^L   |	Clear filter (if prompt	is non-empty)
	      |	OR apply last filter
	 Bksp |	Stay at	filter prompt and refresh dir
	 Del  |	Stay at	filter prompt and refresh dir
       ------ +	-------------------------------------

       Common regex use	cases:

       (1) To list all matches starting	with the filter	expression,
	   start the expression	with a '^' (caret) symbol.
       (2) Type	'\.mkv'	to list	all MKV	files.
       (3) Use '.*' to match any character (sort of fuzzy search).
       (4)   Exclude   filenames  having  'nnn'	 (compiled  with  PCRE2	 lib):
       '^(?!nnn)'

       In the type-to-nav mode directories are opened in filter	mode, allowing
       continuous navigation.

       Additional special keys at empty	filter prompt in type-to-nav mode:

       ------ +	------------------------
	 Key  |		Function
       ------ +	------------------------
	  '   |	Go to first non-dir file
	  +   |	Toggle file selection
	  ,   |	Mark CWD
	  -   |	Go to last visited dir
	  .   |	Show hidden files
	  ;   |	Run a plugin by	its key
	  =   |	Launch a GUI application
	  >   |	Export file list
	  @   |	Visit start dir
	  ]   |	Show command prompt
	  `   |	Visit /
	  ~   |	Go HOME
       ------ +	------------------------

SORTING
       nnn will	always show the	directories  first,  followed  by  the	files.
       String order is always case-insensitive.

       The  sort key can be set	either with the	-T program option, or interac-
       tively using t or ^T. The following options are available:

       a   apparent disk usage,	how large the file appears to be, can be  big-
	   ger than actual disk	usage in sparse	files.

       d   disk	 usage,	 amount	of data	taken on disk, a multiple of the block
	   size.

       e   extension of	the file.

       r   reverse the current order (not available with -T).

       s   size	of file, amount	of data	stored in the file.

       t   time, this depends on the currently selected	time type which	can be
	   changed using the T key.  Options are:
	   a  access, last time	the file was accessed.
	   c  change, last time	the metadata of	the  file  was	changed	 (e.g.
	      permissions).
	   m  modified,	 last  time  the  content of the file was changed (de-
	      fault).

       v   version, sorts by filename while treating digit characters  numeri-
	   cally.  For example:	j1.png,	j02.png, j3.png.

       c   clear, revert to filename order (not	available with -T).

       ^T  cycle between filename/size/time order (not available with -T).

       The uppercase version of	the option (except r) reverses the default or-
       der.  By	default, time and size sort keys are ordered in	descending or-
       der, and	alphabetical fields are	ordered	in ascending order.  For exam-
       ple, when using the e option, the entries will be ordered by extension,
       in  ascending  order.   Using E would result in descending order	of the
       extensions.  This means that e followed by r is the same	as E.

SELECTION
       nnn allows file selection across	directories and	contexts!

       There are 3 groups of keybinds to add files to selection:

       (1) hovered file	selection toggle
	   - deselects if '+' is visible before	the entry, else	adds to	selec-
       tion
       (2) add a range of files	to selection
	   - repeat the	range key on the same entry twice to  clear  selection
       completely
       (3) add all files in the	current	directory to selection

       A selection can be edited, copied, moved, removed, archived or linked.

       Absolute	 paths	of the selected	files are copied to .selection file in
       the config directory. The selection file	 is  shared  between  multiple
       program	instances.  Selection  from multiple instances are not merged.
       The last	instance writing to the	file overwrites	earlier	 contents.  If
       you  have 2 instances of	nnn open in 2 panes of a terminal multiplexer,
       you can select in one pane and use the selection	in the other pane. The
       selection gets cleared in the nnn instance where	the selection was made
       on mv/rm	(but not on cp).

       nnn clears the selection	after a	successful operation with  the	selec-
       tion. Plugins are allowed to define the behaviour individually.

       To edit the selection use the _edit selection_ key. Editing doesn't end
       the  selection  mode.  You can add more files to	the selection and edit
       the list	again. If no file is selected in the current session, this op-
       tion attempts to	list the selection file.

       nnn can show the	total size of non-filtered selected files listed in  a
       directory.  For directories, only the size of the directory is added by
       default.	To add the size	of the contents	of a directory,	sort  by  disk
       usage (aka du mode).

FIND AND LIST
       There are two ways to search and	list:

       - feed a	list of	file paths as input
       - search	using a	plugin (e.g. finder) and list the results

       File  paths  must be NUL-separated ('\0'). Paths	and can	be relative to
       the current directory or	absolute. Invalid paths	in the input  are  ig-
       nored.  Input  processing  limit	is 16,384 paths	or 64 MiB (max_paths x
       max_path_len) of	data.

       To list the input stream, start nnn by writing to its  standard	input.
       E.g., to	list files in current directory	larger than 1M:

	   find	-maxdepth 1 -size +1M -print0 |	nnn

       or redirect a list from a file:

	   nnn < files.txt

       Handy bash/zsh shell function to	list files by mime-type	in current di-
       rectory:

	   # to	show video files, run: list video

	   list	()
	   {
	       find . -maxdepth	1 | file -if- |	grep "$1" | awk	-F: '{printf "%s%c", $1, 0}' | nnn
	   }

       A  temporary directory will be created containing symlinks to the given
       paths. Any action performed on these symlinks will be performed only on
       their targets, after which they might become invalid.

       > or l on a symlink in the listing dir takes to the target file.	 Press
       - to return to the listing dir. Press Enter to open the symlink.

       Listing	input  stream can be scripted. It can be extended to pick (op-
       tion -p)	selected entries from the listed results.

BOOKMARKS
       There are 2 ways	(can be	used together) to manage bookmarks.

       (1) Bookmark keys: See NNN_BMS under ENVIRONMENT	section	on how to set
	   bookmark keys.

	   The select bookmark key b  lists  all  the  bookmark	 keys  set  in
       NNN_BMS
	   in the bookmarks prompt.

       (2)  Symlinked bookmarks: A symlinked bookmark to the current directory
       can
	   be created with the B key (or  manually  under  ~/.config/nnn/book-
       marks).

	   Pressing Enter at the bookmarks prompt takes	to this	directory.
	   If NNN_BMS is not set, the select bookmark key directly opens it.

       On entering a bookmark, the directory where the select bookmark key was
       pressed is set as the previous directory. Press - to return to it.

UNITS
       The  minimum file size unit is byte (B).	The rest are K,	M, G, T, P, E,
       Z, Y (powers of 1024), same as the default units	in ls.

ENVIRONMENT
       The SHELL, VISUAL (else EDITOR) and  PAGER  environment	variables  are
       used.  A	 single	 combination  of  arguments is supported for SHELL and
       PAGER.

       NNN_OPTS: binary	options	to nnn

	   export NNN_OPTS="cEnrx"

       NNN_OPENER: specify a custom file opener.

	   export NNN_OPENER=nuke

	   NOTE: nuke is a file	opener available in the	plugin repository.

       NNN_BMS:	bookmark string	as key_char:location pairs separated by	;:

	   export NNN_BMS="d:$HOME/Docs;u:/home/user/Cam Uploads;D:$HOME/Downloads/"

       These bookmarks are listed in the help and config screen	(key ?).

       NNN_PLUG: directly executable plugins as	 key_char:plugin  pairs	 sepa-
       rated by	;:

	   export NNN_PLUG='f:finder;o:fzopen;p:mocplay;d:diffs;t:nmount;v:imgview'

	   NOTES:
	   1. To run a plugin directly,	press ;	followed by the	key.
	   2. Alternatively, combine with Alt (i.e. Alt+key).
	   3. To skip directory	refresh	after running a	plugin,	prefix with -.

	   export NNN_PLUG='p:-plugin'

	   To  assign keys to arbitrary	non-background cli commands and	invoke
       like
	   plugins, add	! before the command.

	   export NNN_PLUG='x:!chmod +x	"$nnn";g:!git log;s:!smplayer "$nnn"'

	   To pick and run an unassigned plugin, press Enter at	the plugin prompt.
	   To run a plugin at startup, use the option `-P` followed by the plugin key.

	   NOTES:
	   1. Place $nnn (or exported variables) in double quotes ("$nnn")
	   2. Use single quotes	for $NNN_PLUG so "$nnn"	is not interpreted
	   3. (Again) add ! before the command
	   4. To disable directory refresh after running a command as plugin,
	      prefix with -!
	   5. To skip user confirmation	after command execution, suffix	with *
	      Note: Do not use * with programs those run and exit e.g. cat

	       export NNN_PLUG='y:-!sync*'

	   6. To run a GUI app as plugin, add a	& after	!.

	       export NNN_PLUG='m:-!&mousepad "$nnn"'

	   7. To show the output of run-and-exit commands which	do not need user input,
	      add | (pipe) after !
	      Note: This option	is incompatible	with & (terminal output	is masked
	      for GUI programs)	and ignores * (output is already paged for user).

	       export NNN_PLUG='m:-!|mediainfo "$nnn";t:-!|tree	-ps;l:-!|ls -lah --group-directories-first'

	   8. To show the output of run-and-exit commands in a floating	window,
	      add > (right arrow) after	!
	      Note: This option	is incompatible	with & (terminal output	is masked
	      for GUI programs)	and ignores * (output is rendered in a floating
	      window).
	      Option `-` is ignored with this option. The directory is always refreshed.

	       export NNN_PLUG='m:!>mediainfo "$nnn";t:!>tree -ps;l:!>ls -lah --group-directories-first'

	   EXAMPLES:
	   ------------------------------------	+ -------------------------------------------------
		       Key:Command		|		    Description
	   ------------------------------------	+ -------------------------------------------------
	   c:!convert "$nnn" png:- | xclip	| Copy image to	clipboard
	      -sel clipboard -t	image/png*	|
	   C:!cp -rv "$nnn" "$nnn".cp*		| Create a copy	of the hovered file
	   e:-!sudo -E vim "$nnn"*		| Edit file as root in vim
	   g:-!git diff				| Show git diff
	   h:-!hx "$nnn"*			| Open hovered file in hx hex editor
	   k:-!fuser -kiv "$nnn"*		| Interactively	kill process(es) using hovered file
	   l:-!git log				| Show git log
	   n:-!vi /home/user/Dropbox/dir/note*	| Take quick notes in a	synced file/dir	of notes
	   p:-!less -iR	"$nnn"*			| Page through hovered file in less
	   s:-!&smplayer -minigui "$nnn"	| Play hovered media file, even	unfinished download
	   x:!chmod +x "$nnn"			| Make the hovered file	executable
	   y:-!sync*				| Flush	cached writes
	   ------------------------------------	+ -------------------------------------------------

	   Online docs:	https://github.com/jarun/nnn/tree/master/plugins

       NNN_ORDER: directory-specific sort key.

	   export NNN_ORDER='t:/home/user/Downloads;S:/tmp'

	   NOTE: Sort keys can be a/d/e/r/s/t/v	(refer to the SORTING section).
		 Path must be absolute.

		 Timestamps for	entries	modified/created within	5 minutes are shown in reverse.

       NNN_COLORS: string of color numbers for each context, e.g.:

	   # 8 color numbers:
	   # 0-black, 1-red, 2-green, 3-yellow,	4-blue (default), 5-magenta, 6-cyan, 7-white
	   export NNN_COLORS='12341234'

	   # xterm 256 color numbers (converted	to hex,	2 symbols per context):
	   # see https://user-images.githubusercontent.com/1482942/93023823-46a6ba80-f5e1-11ea-9ea3-6a3c757704f4.png
	   export NNN_COLORS='#0a1b2c3d0a1b2c3d'

	   # both (256 followed	by 8 as	fallback, separated by ';')
	   export NNN_COLORS='#0a1b2c3d0a1b2c3d;12341234'

	   NOTE: If only 256 colors are	specified and the terminal doesn't support, default is used.

       NNN_FCOLORS: specify file-type specific colors:

	   export NNN_FCOLORS='c1e2272e006033f7c6d6abc4'

	   Specify file-specific colors	in xterm 256 color hex numbers (2 symbols per color).
	   Order is strict, use	00 to omit/use default terminal	color. Defaults:

	   ------------------------- + --- + -------------
		     Order	     | Hex |	Color
	   ------------------------- + --- + -------------
	   Block device		     | c1  | DarkSeaGreen1
	   Char	device		     | e2  | Yellow1
	   Directory		     | 27  | DeepSkyBlue1
	   Executable		     | 2e  | Green1
	   Regular		     | 00  | Normal
	   Hard	link		     | 60  | Plum4
	   Symbolic link	     | 33  | Cyan1
	   Missing OR file details   | f7  | Grey62
	   Orphaned symbolic link    | c6  | DeepPink1
	   FIFO			     | d6  | Orange1
	   Socket		     | ab  | MediumOrchid1
	   Unknown OR 0B regular/exe | c4  | Red1
	   ------------------------- + --- + -------------

	   If the terminal supports xterm 256 colors or	more, file-specific colors will	be rendered.
	   To force the	8-color	scheme use option -C.
	   If xterm 256	colors aren't supported, 8-color scheme	will be	used.

       NNN_ARCHIVE: archive extensions to be handled silently (default:	bzip2,
       (g)zip, tar).

	   export NNN_ARCHIVE="\\.(7z|bz2|gz|tar|tgz|zip)$"

	   NOTE: Non-default formats may require a third-party utility.

       NNN_ARCHMNT: optional archive mounter utility (default: archivemount).

	   export NNN_ARCHIVE='fuse-archive'

       NNN_SSHFS: specify custom sshfs command with options:

	   export NNN_SSHFS='sshfs -o reconnect,idmap=user,cache_timeout=3600'

	   NOTE: The options must be comma-separated without any space between them.

       NNN_RCLONE: pass	additional options to rclone command:

	   export NNN_RCLONE='rclone mount --read-only --no-checksum'

	   NOTE: The options must be preceded by "rclone" and max 5 flags are supported.

       NNN_TRASH: trash	(instead of rm -rf) files to desktop Trash.

	   export NNN_TRASH=cmd

	   NOTES:
	   1. cmd is the name/path of the binary that nnn will call for
	      trashing files. E.g to use macOS's native	`trash'	command:
	      export NNN_TRASH="trash"
	   2. Special value "1"	and "2"	for cmd	will use trash-cli and
	      gio trash	respectively.

       NNN_SEL:	absolute path to custom	selection file.

	   export NNN_SEL='/tmp/.sel'

       NNN_FIFO: path of a named pipe to write the hovered file	path:

	   export NNN_FIFO='/tmp/nnn.fifo'

	   NOTES:
	   1. Overridden by a temporary	path with -a option.
	   2. If the FIFO file doesn't exist it	will be	created,
	      but not removed (unless it is generated by -a option).

	   Online docs:	https://github.com/jarun/nnn/wiki/Live-previews

       NNN_LOCKER: terminal locker program.

	   export NNN_LOCKER='bmon -p wlp1s0'
	   export NNN_LOCKER='cmatrix'

       NNN_TMPFILE: always cd on quit and write	the command in the file	speci-
       fied.

	   export NNN_TMPFILE='/tmp/.lastd'

       NNN_HELP: run a program and show	the output on top of the program  help
       page.

	   export NNN_HELP='fortune'

       NNN_MCLICK: key emulated	by a middle mouse click.

	   export NNN_MCLICK='^R'

	   NOTE: Only the first	character is considered	if not a Ctrl+key combo.

       nnn: this is a special variable.

	   Set to the hovered file name	before starting	the command prompt or spawning a shell.

       NO_COLOR: disable ANSI color output (overridden by NNN_COLORS).

AUTHORS
       Arun Prakash Jana <engineerarun@gmail.com>,
       Lazaros Koromilas <lostd@2f30.org>,
       Dimitris	Papastamos <sin@2f30.org>.

HOME
       https://github.com/jarun/nnn

FreeBSD	ports 15.quarterly	 Feb 14, 2026				NNN(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nnn&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help