nnn/README.md

214 lines
11 KiB
Markdown
Raw Normal View History

2020-01-15 09:31:14 +00:00
<h1 align="center">nnn - <i>supercharge your productivity!</i></h1>
2016-08-20 16:27:14 +00:00
2017-04-14 17:46:01 +00:00
<p align="center">
<a href="https://github.com/jarun/nnn/releases/latest"><img src="https://img.shields.io/github/release/jarun/nnn.svg?maxAge=600" alt="Latest release" /></a>
2020-03-24 03:48:04 +00:00
<a href="https://repology.org/project/nnn/versions"><img src="https://repology.org/badge/tiny-repos/nnn.svg?header=in repos" alt="Availability"></a>
<a href="https://travis-ci.org/jarun/nnn"><img src="https://img.shields.io/travis/jarun/nnn/master.svg?label=travis" alt="Travis Status" /></a>
<a href="https://circleci.com/gh/jarun/workflows/nnn"><img src="https://img.shields.io/circleci/project/github/jarun/nnn.svg?label=circleci" alt="CircleCI Status" /></a>
2020-03-07 18:10:46 +00:00
<a href="https://en.wikipedia.org/wiki/Privacy-invasive_software"><img src="https://img.shields.io/badge/privacy-✓-crimson?maxAge=2592000" alt="Privacy Awareness" /></a>
<a href="https://github.com/jarun/nnn/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-BSD%202--Clause-yellow.svg?maxAge=2592000" alt="License" /></a>
2020-03-07 18:10:46 +00:00
<a href="https://github.com/jarun/nnn/wiki"><img src="https://img.shields.io/badge/nnn-Wiki-important?maxAge=2592000" alt="Wiki" /></a>
2020-04-10 12:30:52 +00:00
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RMLTQ76JSXJ4Q"><img src="https://img.shields.io/badge/PayPal-donate-1eb0fc.svg" alt="Donate via PayPal!" /></a>
</p>
2019-09-30 23:00:58 +00:00
<p align="center"><a href="https://www.youtube.com/watch?v=U2n5aGqou9E"><img src="https://i.imgur.com/MPWpmos.png" /></a></p>
<p align="center"><i>navigate-as-you-type & du (click to see demo video)</i></p>
2016-08-21 12:07:18 +00:00
2019-08-09 04:58:14 +00:00
## Introduction
2019-07-29 23:27:59 +00:00
2019-11-30 14:37:11 +00:00
`nnn` is a full-featured terminal file manager. It's tiny and nearly 0-config with an [incredible performance](https://github.com/jarun/nnn/wiki/Performance).
2019-07-29 23:27:59 +00:00
2020-01-07 16:42:39 +00:00
`nnn` is also a du analyzer, an app launcher, a batch renamer and a file picker. The [plugin repository](https://github.com/jarun/nnn/tree/master/plugins#nnn-plugins) has tons of plugins and documentation to extend the capabilities further. You can _plug_ new functionality _and play_ with a hotkey. There's an independent [(neo)vim plugin](https://github.com/mcchrish/nnn.vim).
2020-04-03 14:13:33 +00:00
It runs smoothly on the Pi, [Termux](https://www.youtube.com/watch?v=AbaauM7gUJw) (Android), Linux, macOS, BSD, Haiku, Cygwin, WSL, across DEs and GUI utilities or a strictly CLI environment.
2019-09-27 03:14:52 +00:00
2020-04-09 04:18:04 +00:00
Once installed (instructions below), visit the [Wiki](https://github.com/jarun/nnn/wiki).
2020-04-10 12:30:52 +00:00
## Black magic!
1. Turbo navigate with automatic dir selection
2. Select files from anywhere (not just a single dir)
3. Run custom commands with custom hotkeys
4. Edit and preview markdown, man page, html quickly
5. Open a file and auto-proceed to the next
6. Export (filtered) list of files to a text file
7. Find files by mime-type and list in `nnn`
8. Write a plugin in any language you know
9. Configure the middle mouse click to do anything
10. Fuzzy search subtree and open the directory of a file
11. Load four dirs with custom settings at once
12. Show notifications on cp, mv completion
13. Auto-sync selection to system clipboard
14. Open text files detached in another pane/tab/window
15. Create files/dirs/duplicates with parents (like `mkdir -p`)
16. Toggle hidden with <kbd>.</kbd>, go HOME with <kbd>~</kbd> or to the last dir with <kbd>-</kbd>
17. Pin a frequently visited directory at runtime
18. Mount any cloud storage service in few keypresses
19. Mount and modify archives
20. Filter filtered entries
21. Sort files by access time and inode change time
22. Access selection from another instance of `nnn`
23. Compile out features you don't need
24. Watch matrix text flying or read random fortune messages
25. Configure it in 5 minutes!
2020-01-21 12:59:54 +00:00
2019-08-09 04:58:14 +00:00
## Features
2017-04-21 03:30:46 +00:00
2020-01-09 20:31:20 +00:00
- Resource sensitive
2020-01-14 17:21:10 +00:00
- Typically needs less than 3.5MB resident memory
2020-01-09 20:31:20 +00:00
- Works with 8-bit colors
- Disk-IO sensitive (few disk reads and writes)
2020-01-12 18:28:48 +00:00
- No FPU usage (all integer maths, even for file size)
2020-01-12 18:03:42 +00:00
- Minimizes screen refresh with fast line redraws
2020-01-14 17:21:10 +00:00
- Tiny binary (typically less than 100KB)
2020-01-10 14:13:37 +00:00
- Portable
2020-02-18 12:54:53 +00:00
- Statically-linked binary available
2020-01-16 14:49:21 +00:00
- Language-agnostic plugins
2020-02-15 01:55:18 +00:00
- Minimal library deps, easy to compile
- Compile in/out features with make variables
2020-01-10 14:13:37 +00:00
- No config file, minimal config with sensible defaults
- Widely available on many packagers
- Unicode support
- Quality
- Privacy-aware (no unconfirmed user data collection)
- POSIX-compliant, follows Linux kernel coding style
- Highly optimized, static analysis integrated code
2018-11-11 17:50:16 +00:00
- Modes
2019-09-15 17:02:44 +00:00
- Light (default), detail
2019-03-22 23:27:21 +00:00
- Disk usage analyzer (block/apparent)
2019-03-24 16:31:15 +00:00
- File picker, (neo)vim plugin
2017-05-15 16:59:40 +00:00
- Navigation
2019-08-20 14:30:48 +00:00
- *Navigate-as-you-type* with dir auto-select
2019-10-24 07:18:12 +00:00
- Contexts (_aka_ tabs/workspaces) with custom colors
2020-01-07 16:42:39 +00:00
- Sessions, bookmarks with hotkeys; pin and visit a dir
2019-11-25 02:20:22 +00:00
- Remote mounts (needs sshfs, rclone)
2019-10-12 04:18:58 +00:00
- Familiar shortcuts (arrows, <kbd>~</kbd>, <kbd>-</kbd>, <kbd>@</kbd>), quick reference
2019-09-26 16:21:38 +00:00
- CD on quit (*easy* shell integration)
2020-02-01 17:12:49 +00:00
- Auto-proceed on opening files
- Search
- Instant filtering with *search-as-you-type*
- Regex (POSIX/PCRE) and string (default) filters
- Subtree search plugin to open or edit files
- Sort
2019-07-14 17:30:14 +00:00
- Ordered pure numeric names by default (visit _/proc_)
- Case-insensitive version (_aka_ natural) sort
- By file name, access/change/mod (default) time, size, extension
2020-01-09 14:11:22 +00:00
- Reverse sort
2017-05-15 16:59:40 +00:00
- Mimes
2018-11-11 17:50:16 +00:00
- Open with desktop opener or specify a custom app
2019-10-11 20:43:08 +00:00
- Create, list, extract, mount (FUSE based) archives
2019-04-30 03:06:55 +00:00
- Option to open all text files in EDITOR
2017-05-15 16:59:40 +00:00
- Information
2019-04-30 03:06:55 +00:00
- Detailed file information
- Media information plugin
2017-05-15 16:59:40 +00:00
- Convenience
2020-01-07 16:42:39 +00:00
- Run plugins and custom commands with hotkeys
2019-03-09 03:35:32 +00:00
- FreeDesktop compliant trash (needs trash-cli)
2019-10-24 01:26:15 +00:00
- Cross-dir file/all/range selection
2020-03-11 12:22:38 +00:00
- Batch renamer for selection or dir
- Display a list of files from stdin
2019-10-14 22:17:57 +00:00
- Copy (as), move (as), delete, archive, link selection
2020-01-22 20:19:04 +00:00
- Dir updates, notification on cp, mv, rm completion
- Copy file paths to system clipboard on select
- Create (with parents), rename, duplicate (anywhere) files and dirs
2020-01-02 17:43:56 +00:00
- Launch GUI apps, run commands, spawn a shell, toggle executable
2019-11-23 20:43:27 +00:00
- Hovered file set as `$nnn` at prompt and spawned shell
2020-01-11 23:18:23 +00:00
- Lock terminal after configurable idle timeout
2017-03-29 05:33:22 +00:00
2019-09-26 00:16:06 +00:00
## Quickstart
2020-02-29 13:35:34 +00:00
1. Install optional [deps](https://github.com/jarun/nnn#utility-dependencies) (if you need any).
2019-09-26 00:16:06 +00:00
2. Configure [cd on quit](https://github.com/jarun/nnn/wiki/Basic-use-cases#configure-cd-on-quit).
2020-03-30 20:29:30 +00:00
3. Use option `-e` in your alias to open text files in `$VISUAL`/`$EDITOR`/ vi. [Open detached](https://github.com/jarun/nnn/wiki/Basic-use-cases#detached-text) if you wish.
2020-02-29 13:35:34 +00:00
4. [Install plugins](https://github.com/jarun/nnn/tree/master/plugins#installing-plugins).
5. Use option `-x` to copy selected file paths to system clipboard and show notis on cp, mv, rm completion.
6. For a CLI-only environment, customize and use plugin [`nuke`](https://github.com/jarun/nnn/blob/master/plugins/nuke) with option `-c` (overrides `-e`).
2019-09-26 00:16:06 +00:00
2020-01-12 08:35:33 +00:00
Don't memorize! Arrows (or <kbd>h</kbd> <kbd>j</kbd> <kbd>k</kbd> <kbd>l</kbd>), <kbd>/</kbd>, <kbd>q</kbd> suffice. <kbd>Tab</kbd> creates, cycles contexts. <kbd>?</kbd> lists shortcuts.
2019-09-26 00:16:06 +00:00
2019-08-09 04:58:14 +00:00
## Installation
2017-03-29 05:33:22 +00:00
2020-02-18 12:54:53 +00:00
No permission to install packages? Get the statically linked binary from the latest release.
2019-02-10 03:15:13 +00:00
#### Library dependencies
2017-08-14 00:13:01 +00:00
2019-12-13 13:52:19 +00:00
A curses library with wide char support (e.g. ncursesw), libreadline (optional) and standard libc.
2016-08-20 16:27:14 +00:00
2019-02-10 03:15:13 +00:00
#### Utility dependencies
2019-06-14 03:22:17 +00:00
| Dependency | Installation | Operation |
| --- | --- | --- |
| xdg-open (Linux), open(1) (macOS), cygstart<br>(Cygwin), open (Haiku) | base | desktop opener |
2019-11-21 15:00:38 +00:00
| file, coreutils (cp, mv, rm), xargs | base | file type, copy, move and remove |
2019-12-29 17:51:18 +00:00
| tar, (un)zip [atool/bsdtar for more formats] | base | create, list, extract bzip2, (g)zip, tar |
2020-03-01 01:14:54 +00:00
| archivemount, fusermount(3)/umount (macOS) | optional | mount, unmount archives |
| sshfs, [rclone](https://rclone.org/), fusermount(3)/umount (macOS) | optional | mount, unmount remotes |
2019-11-06 10:56:49 +00:00
| trash-cli | optional | trash files (default action: rm) |
| vlock (Linux), bashlock (macOS), lock(1) (BSD),<br>peaclock (Haiku) | optional | terminal locker (fallback: [cmatrix](https://github.com/abishekvashok/cmatrix)) |
2020-03-30 20:29:30 +00:00
| advcpmv (Linux) ([integration](https://github.com/jarun/nnn/wiki/Advanced-use-cases#cp-mv-progress)) | optional | copy, move progress |
2020-03-30 03:39:11 +00:00
| fortune | optional | random quotes in help screen |
2019-06-14 03:22:17 +00:00
| `$VISUAL` (else `$EDITOR`), `$PAGER`, `$SHELL` | optional | fallback vi, less, sh |
2019-02-10 03:15:13 +00:00
2017-08-14 00:13:01 +00:00
#### From a package manager
2016-08-20 16:27:14 +00:00
2019-09-27 13:33:19 +00:00
Install `nnn` from your package manager. If the version available is dated try an alternative installation method.
2019-07-31 18:01:37 +00:00
<details><summary>Packaging status (expand)</summary>
<p>
<br>
<a href="https://repology.org/project/nnn/versions"><img src="https://repology.org/badge/vertical-allrepos/nnn.svg" alt="Packaging status"></a>
</p>
Unlisted packagers:
<p>
<br>
● CentOS (<code>yum --enablerepo=epel install nnn</code>)<br>
<a href="https://notabug.org/milislinux/milis/src/master/talimatname/genel/n/nnn/talimat">Milis Linux</a> (<code>mps kur nnn</code>)<br>
<a href="https://www.nutyx.org/en/?type=pkg&branch=rolling&arch=x86_64&searchpkg=nnn">NuTyX</a> (<code>cards install nnn</code>)<br>
<a href="http://codex.sourcemage.org/test/shell-term-fm/nnn/">Source Mage</a> (<code>cast nnn</code>)<br>
</p>
2019-08-20 03:17:48 +00:00
</details>
2019-01-11 09:01:33 +00:00
2017-08-13 14:50:37 +00:00
#### Release packages
2019-09-27 13:33:19 +00:00
Packages for Arch Linux, CentOS, Debian, Fedora and Ubuntu are auto-generated with the [latest stable release](https://github.com/jarun/nnn/releases/latest).
2017-08-13 14:50:37 +00:00
2017-08-14 00:13:01 +00:00
#### From source
2020-04-03 14:13:33 +00:00
Download the [latest stable release](https://github.com/jarun/nnn/releases/latest) or clone this repository (*risky*), install deps and compile. On Ubuntu 18.04:
2017-08-14 00:13:01 +00:00
2020-02-19 19:27:14 +00:00
```sh
sudo apt-get install pkg-config libncursesw5-dev libreadline-dev
sudo make strip install
```
2017-08-14 00:13:01 +00:00
`PREFIX` is supported, in case you want to install to a different location.
2019-12-22 03:06:37 +00:00
See the [developer guides](https://github.com/jarun/nnn/wiki/Developer-guides) for source verification, compilation notes on the Pi, Cygwin and other tips.
2018-12-01 16:15:45 +00:00
2018-11-13 03:51:21 +00:00
#### Shell completion
2017-09-02 06:53:19 +00:00
2019-09-27 13:33:19 +00:00
Completion scripts for Bash, Fish and Zsh are [available](misc/auto-completion). Refer to your shell's manual for installation instructions.
2017-09-02 06:53:19 +00:00
2019-10-06 14:22:30 +00:00
## Elsewhere
2017-04-25 16:54:47 +00:00
2019-10-06 14:22:30 +00:00
- [Wikipedia](https://en.wikipedia.org/wiki/Nnn_(file_manager))
- [ArchWiki](https://wiki.archlinux.org/index.php/Nnn)
2017-04-25 16:54:47 +00:00
- [FOSSMint](https://www.fossmint.com/nnn-linux-terminal-file-browser/)
2019-11-11 21:31:53 +00:00
- [gHacks Tech News](https://www.ghacks.net/2019/11/01/nnn-is-an-excellent-command-line-based-file-manager-for-linux-macos-and-bsds/)
2019-09-29 04:18:51 +00:00
- Hacker News [[1](https://news.ycombinator.com/item?id=18520898)] [[2](https://news.ycombinator.com/item?id=19850656)]
2018-08-18 07:04:25 +00:00
- [It's FOSS](https://itsfoss.com/nnn-file-browser-linux/)
2020-02-24 14:26:02 +00:00
- LinuxLinks [[1](https://www.linuxlinks.com/nnn-fast-and-flexible-file-manager/)] [[2](https://www.linuxlinks.com/bestconsolefilemanagers/)] [[3](https://www.linuxlinks.com/excellent-system-tools-nnn-portable-terminal-file-manager/)]
2019-01-02 06:31:21 +00:00
- [Suckless Rocks](https://suckless.org/rocks/)
2018-08-18 07:04:25 +00:00
- [Ubuntu Full Circle Magazine - Issue 135](https://fullcirclemagazine.org/issue-135/)
2017-04-25 16:54:47 +00:00
2019-08-09 04:58:14 +00:00
## Developers
2017-04-15 01:21:10 +00:00
2019-12-31 17:11:25 +00:00
- [Arun Prakash Jana](https://github.com/jarun) (Copyright © 2016-2020)
2019-10-18 23:44:18 +00:00
- [0xACE](https://github.com/0xACE)
2019-12-19 19:05:58 +00:00
- [Anna Arad](https://github.com/annagrram)
2019-10-18 23:44:18 +00:00
- [KlzXS](https://github.com/KlzXS)
2019-12-19 19:05:58 +00:00
- [Maxim Baz](https://github.com/maximbaz)
2019-10-18 23:44:18 +00:00
- and other contributors
2019-01-18 02:08:56 +00:00
2020-04-03 14:13:33 +00:00
`nnn` is actively developed. Visit the to the [ToDo list](https://github.com/jarun/nnn/issues/506) to contribute or see the features in progress.