nnn (Русский)
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.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'"
Теперь можно использовать ncp
для получения списка выделенных файлов и его передачи в другие программы через пайп.
Указание уровня вложенности оболочки
Когда используется !
чтобы открыть командную оболочку в текущей директории (не запутайтесь в оболочках, которые запустили nnn, и которые запущенны из nnn) можно добавить такую строку, чтобы не запутаться:
~/.bashrc
[ -n "$NNNLVL" ] && PS1="N$NNNLVL $PS1"
Настройка добавляет N<уровень вложенности> перед каждым приглашением bash.
Выход и cd (Ctrl-G)
Обычно, когда выходите из nnn, вас переносит в директорию, из которой запустили менеджер, однако если настроить cd-on-quit, то при выходе оболочка уже будет находится в последней выбранной в nnn директории.
Для настройки добавьте в ваш .bashrc
/.zshrc
:
~/.bashrc или ~/.zshrc
if [ -f /usr/share/nnn/quitcd/quitcd.bash_zsh ]; then source /usr/share/nnn/quitcd/quitcd.bash_zsh fi
Подключённый скрипт создаст команду n
(точнее, bash-функцию n) — используйте её вместо команды nnn
.
Смотрите также статью 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 репозитория для конкретного файла вместе с кодом для удобного код-ревью.