nnn (Русский)

From ArchWiki
Jump to navigation Jump to search

nnn (стилизованно: n3) это компактный файловый менеджер для терминала, написанный на Си. Является очень гибким за счёт своей системы плагинов, которая абстрагирована от языка, например, плагин (neo)vim.

nnn имеет встроенную функцию (раз)архивирования широко распространённых форматов, функцию анализа использования диска, средство нечёткого запуска приложений (неполное или чуть неправильно написанное имя) и средство множественного переименования. nnn поддерживает быстрый поиск search-as-you-type с регексом и навигацию navigate-as-you-type с непрерывной навигацией и авто-выделением. Кроме того поддерживаются контексты, закладки, сложные условия сортировки, SSHFS, множественные операции над выделенными объектами и другое.

Несмотря на свои возможности, nnn спроектирован быть простым в использовании и конфигурируемым через переменные окружения, нежели конфигурационные файлы.

Установка

nnn распространяется как пакет nnn из официального community репозитория.

Использование

nnn управляется не только как vim при помощи hjkl, но и при помощи стрелок. Для удобного использования (в отличие от vim) достаточно стрелок, / и q. Смотри справку через ? в любой момент.

Конфигурация

nnn конфигурируется через переменные окружения, обычно добавляемые в файл ~/.bashrc. Дополнительную информацию о конфигурировании можно прочесть как в nnn(1), так и на вики в GitHub.

Вот пример конфигурации ~/.bashrc:

~/.bashrc
export NNN_BMS='d:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/'
export NNN_SSHFS="sshfs -o follow_symlinks" # заставляет sshfs следовать по символьным ссылкам
export NNN_COLORS="2136"                    # разные цвета для разных контекстов (см. man)
export NNN_TRASH=1                          # перемещение в корзину вместо удаления файлов (требуется trash-cli)
Примечание: Если запускаете nnn при помощи nnn.desktop из среды рабочего стола, он может не подхватить настройку из .bashrc. В таком случае, смотри статью desktop integration на вики в GitHub.

Самая полезная настройка из всех это NNN_BMS. Она позволяет выбрать горячие клавиши для указанных каталогов. Перемещение в директорию происходит по нажатию на b с выбранной буквой закладки. В примере выше требуется нажать bD, чтобы переместиться в каталог ~/Downloads.

Советы и рекомендации

Список выделенных файлов

Получить список выделенных файлов можно при помощи псевдонимов. Например, этот вывод можно использовать в пайплайне, как в примере:

~/.bashrc
alias ncp="cat ${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} | tr '\0' '\n'"

Указание уровня вложенности оболочки

Когда используется ! чтобы открыть командную оболочку в текущей директории (не запутайтесь в оболочках, которые запустили nnn, и которые запущенны из nnn) можно добавить такую строку, чтобы не запутаться:

~/.bashrc
[ -n "$NNNLVL" ] && PS1="N$NNNLVL $PS1"

Настройка добавляет N<уровень вложенности> перед каждым приглашением bash.

Выход и cd (Ctrl-G)

Обычно, когда выходите из nnn, вас переносит в директорию, из которой запустили менеджер, однако если настроить cd-on-quit, то при выходе оболочка уже будет находится в последней выбранной в nnn директории.

Для настройки выберите для своей оболочки скрипт из папки misc/quitcd в репозитории на GitHub и скопируйте в свой rc файл. Смотри также статью configure cd on quit на вики в GitHub.

Добавление плагинов

Чтобы добавить плагин, следует добавить файл плагина в ${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins/. Например, можно создать свой запускаемый шелл-скрипт

${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins/git-changes
#!/usr/bin/env sh
 git log -p -- "$@"

Скрипт срабатывает по нажатии клавиши R и выбору git-changes, который покажет удобный журнал изменений git репозитория для конкретного файла вместе с кодом для удобного код-ревью.

Смотрите также