Manage your files
We’re hell bent on having you organise your files this month. So listen up. Nnn, or n cubed, bills itself as the fastest file manager ever written. It’s based on Noice, so the name is a recursive acronym for Nnn’s Not Noice.
Nnn takes things to the next level. It’s written in C, and aims to have as small a memory footprint as possible. As a result, it’s pretty minimal and won’t be to everyone’s tastes. Heck, it doesn’t even have a configuration file, so if you want to change things you can do so through environment variables, plugins and command line switches.
But let’s not get ahead of ourselves. You can install nnn in Ubuntu with:
$ sudo apt install nnn but you’ll get a slightly older version (3.0 if you’re using 20.04, as opposed to the current 3.2). If you want the latest and greatest you’ll find RPMs and DEBs in the releases section of the project’s GitHub at https://github.com/ jarun/nnn and you may as well just install that over the top of the one in the Ubuntu repos. The dependencies won’t change – all it needs is the C library and Ncurses. Check the wiki to see some of the other tools it can integrate with.
Firing it up you’ll see that it is indeed fast, and it is indeed somewhat spartan. There’s only a single panel, which you can scroll with the cursors or Vim (or Emacs) navigation. Use the left arrow or backspace to go to the parent directory. If you’re using nnn in a fully fledged desktop environment then opening files (either with the right arrow or enter) will respect your file associations there, via the xdg-open helper.
Here are a few handy shortcut keys to get you started, you’ll find the rest by pressing ?:
~ switch to your home directory @ switch to directory you launched nnn from - switch to last visited directory . show/hide dotfiles ! spawn a shell in the current directory
Nnn supports up to four contexts, which are like tabs with memory (you can set them up to remember settings and locations). Those are the numbers in the corner, the current context (1 if you’ve just opened nnn) has its number highlighted with a blue background, and other contexts in use are underlined. Switch contexts using keys 1 through 4, you’ll see if you navigate somewhere in context 1, then switch to context 2 and navigate to a different place, then you can hop back and forth using the 1 and 2 keys. You can quit a context by pressing q, which will take you to the previous active context. Quitting all the contexts is the same as exiting the program, but you can also do that with a capital Q.
If you wanted to copy files from one directory to another select them with space (or Ctrl-J if you want to be difficult), navigate to the destination (contexts are handy here) and hit p. To move them instead, use v.
To delete them (careful!) press x. You can rename individual files with Ctrl-R. If you select a bunch of them, then press r, then s (for selection), this will open a text file listing their names from whence you can rename them all at once. If no files are selected, then you can rename everything in the current directory this way.
Bring the panes
Conventional and Orthodox file managers are all about multiple panes, or panels or columns or whatever you want to call them.
Midnight Commander has two, Ranger has (by default) three and 4Pane has seven (just checking you’re paying attention). Nnn has only one. And that’s part of its minimal design. However, if you want to run two (or more) instances side by a terminal multiplexer, then it will happily accommodate that. The simplest way is with dvtm, which we can install and invoke with:
$ sudo apt install dvtm
$ dvtm nnn nnn
What’s really magic about this is that the two instances share buffers and selections and wotnot. You can’t recreate traditional file manager functionality (where you navigate directories with the left pane and files with the right), but you can do other cool stuff. You can switch between the two dvtm “windows” using the mouse, or using the modifier key (Mod, which defaults to Ctrl-G) and then the 1 and 2 keys.
The current window has its topbar highlighted in blue. Start a new window with Mod-c and it will tile nicely into the existing arrangement, giving you a handy terminal. You can shrink the current window with Mod-h and enlarge it with Mod-l. Just like a glorious tiling window manager. Windows can be closed with Mod-x.
A number of plugins (see box, opposite) can use a multiplexer too. For example the preview-tui plugin (see https://github.com/ jarun/nnn/blob/master/ plugins/preview-tui) can use tmux or kitty to display in line previews. With a bit of scripting magic (check the wiki) you can use this to obtain live previews of files (if the hot key method described below is too taxing). Alternatively tabbed from Suckless tools can be used to get live previews of videos, images and PDFs via the preview-tabbed plugin.
Multimedia files will open in whatever your desktop tells them to, if you’re using a proper desktop. If not, you can set default MIME types with the xdg-mime command. You’ll want to install some lightweight viewers, such as sxiv (for images), zathura (for PDFs) and mpv (for videos). To edit a text file (with whatever’s set in the $EDITOR variable, or else Vim) navigate to it and press e.
As in Ranger, there’s no built-in search functionality. But there is very quick filtering that’s available from the / key. So if you know where you’re going, hit / and type the first few letters of the directory, navigate with the cursors, then rinse, lather and repeat. You can toggle filtering by regular expressions by hitting / again. But that’s a can of worms we probably shouldn’t open up here.