nnn — файловый менеджер для терминала, написанный на C. У него нет графических зависимостей, кроме ncurses, а бинарник занимает около сотни килобайт и запускается мгновенно даже на слабой машине. Вместо мыши и панелей с вкладками здесь клавиатурная навигация, закладки, фильтр по имени и подключаемые плагины. Инструмент хорошо подходит для сервера без графики, для tmux и для тех, кто устал от тяжёлых файловых менеджеров, но не хочет запоминать десятки неочевидных сочетаний.
Чем nnn отличается от других
Философия простая: одна панель, минимум хрома, внешние команды вместо встроенных просмотрщиков. Предпросмотр, архивирование, корзина и даже воспроизведение музыки вынесены в плагины — небольшие скрипты, которые вызываются по горячей клавише. Ядро остаётся компактным, а поведение настраивается переменными окружения, а не отдельным конфигурационным файлом. За счёт этого nnn легко переносить между дистрибутивами: достаточно скопировать несколько строк в ~/.bashrc или ~/.zshrc.
Установка
Пакет есть в Debian, Ubuntu, Linux Mint, Fedora, Arch и openSUSE. Версия из репозитория обычно отстаёт на один-два выпуска, но для повседневной работы этого достаточно. Если нужна свежая сборка, её собирают из исходников, предварительно установив компилятор и заголовки ncurses.
sudo apt install nnn
nnn -h
nnn -d -H ~/Documents
man nnn
Ключ -d включает подробный режим с размером, правами и временем изменения, -H показывает скрытые файлы. Оба флага можно задать постоянно через переменную NNN_OPTS, чтобы не набирать их каждый раз.
Навигация и основные клавиши
Перемещение стрелками или j и k, вход в каталог — Enter или l, возврат на уровень выше — h или Backspace. Клавиша . переключает скрытые файлы, / запускает фильтр по имени, d открывает подробный режим. Пробел выделяет файл, a выделяет всё, y копирует, x вырезает, p вставляет. Для переименования служит r, для создания файла или каталога — n, для редактирования в $EDITOR — e. Клавиша ? показывает справку, q выходит.
Полезны быстрые переходы: ~ ведёт в домашний каталог, - — в предыдущий, @ — в стартовый. Закладки задаются клавишей b, переход к ним — апострофом. Восклицательный знак открывает shell в текущем каталоге, что удобно для разовой команды без выхода из менеджера.
- Назначьте закладки на два-три рабочих каталога через
NNN_BMS. - Включите подробный режим через постоянную опцию
NNN_OPTS='dH'. - Проверьте, что каталог плагинов существует и доступен на чтение.
- Настройте корзину до первой операции удаления.
Настройка через окружение
nnn читает переменные при старте. Главные из них — NNN_BMS для закладок, NNN_PLUG для привязки плагинов, NNN_OPENER для программы открытия и NNN_TRASH для безопасного удаления. Строки лучше держать в rc-файле оболочки: так они переживут обновление пакета и будут одинаковы в tmux и ssh-сессиях.
export NNN_BMS='d:~/Documents;D:~/Downloads;c:~/.config;p:~/Pictures'
export NNN_PLUG='p:preview-tui;t:trash;g:gitstatus'
export NNN_OPENER=mimeopen
export NNN_TRASH=1
export NNN_OPTS='dH'
Формат NNN_BMS — пары «клавиша:путь» через точку с запятой. В NNN_PLUG указывается клавиша и имя скрипта из каталога плагинов. Если плагин не найден, nnn не выдаст подробную ошибку, а просто ничего не сделает, поэтому путь стоит проверить отдельно.
Плагины
В дистрибутивном пакете плагины лежат в отдельном каталоге. Точное расположение зависит от сборки, поэтому его определяют через список файлов пакета. Свои скрипты можно положить в ~/.config/nnn/plugins — пользовательский каталог имеет приоритет.
dpkg -L nnn | grep -i plugins
ls /usr/share/nnn/plugins
mkdir -p ~/.config/nnn/plugins
nnn -d
Плагин preview-tui показывает содержимое файла в соседней панели tmux; для картинок ему нужен chafa или похожий просмотрщик, для текста достаточно bat или less. Плагин trash перемещает файлы в корзину через trash-cli, а gitstatus выводит состояние репозитория. После изменения NNN_PLUG менеджер нужно перезапустить: переменные читаются только при старте.
Выделение файлов и скрипты
Выделенные пробелом файлы можно передать внешней команде. Для этого удобен ключ -p: он указывает файл, куда nnn записывает список при выходе. Дальше с ним работает любой инструмент, читающий строки, — от ls до rsync. Это превращает менеджер в удобный селектор для пакетной обработки.
nnn -p /tmp/nnn_selection
xargs -a /tmp/nnn_selection -d '\n' ls -lh
xargs -a /tmp/nnn_selection -d '\n' cp -t ~/backup
xargs -a /tmp/nnn_selection -d '\n' rm -i
Проверяйте список перед удалением: xargs не спрашивает подтверждения, а имена с пробелами требуют нулевого разделителя. Для сложных имён надёжнее find -print0 и xargs -0, но в случае с nnn разделитель уже задан явно.
Диагностика
Если nnn открывается, но плагины и предпросмотр не работают, почти всегда виноват путь или отсутствующая утилита. Проверьте, какие переменные видит процесс, и убедитесь, что скрипт исполняемый. Проблемы с отображением в tmux обычно связаны с TERM и поддержкой цветов, а не с самим менеджером.
echo "$NNN_PLUG"
ls -l ~/.config/nnn/plugins
file ~/.config/nnn/plugins/preview-tui
nnn -d -x ~/Downloads
Флаг -x включает уведомления о действиях и помогает понять, сработала ли команда. Для проверки окружения запускайте nnn из той же оболочки, где заданы переменные: cron и systemd не читают ~/.bashrc, поэтому там настройки нужно прописывать отдельно.
Когда nnn не подойдёт
nnn сознательно экономит на встроенных возможностях. Здесь нет файлового дерева, встроенного просмотра PDF и полноценного двухпанельного режима, как в Midnight Commander. Предпросмотр зависит от внешних утилит, а настройка целиком держится на переменных окружения — новичку это кажется неудобным. Если нужна мышь, встроенные операции с архивами и работа без чтения документации, лучше выбрать файловый менеджер с графическим интерфейсом.
Зато на сервере, где нет X11, nnn остаётся одним из самых предсказуемых вариантов: он не тянет Python-зависимости, быстро реагирует и переживает разрыв ssh-сессии вместе с tmux. Для сценариев, где важна каждая секунда запуска, это заметное преимущество. Платой за скорость остаётся привычка: первые дни придётся держать справку под рукой.
Итог
nnn — пример инструмента, который делает одну вещь и не мешает остальным. Он быстро стартует, работает по ssh и расширяется плагинами без раздувания ядра. Начните с установки и трёх-четырёх клавиш, затем добавьте закладки и preview-tui. Если же нужен встроенный предпросмотр изображений и мышиная навигация из коробки, проще посмотреть в сторону более тяжёлых менеджеров.