nnn (Русский) - ArchWiki

Jump to content
From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи nnn. Дата последней синхронизации: 14 октября 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- File manager functionality (Русский)
- Midnight Commander (Русский)
- ranger
- vifm

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

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

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

## Установка

nnn распространяется как пакет nnn.

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

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'"

Теперь можно использовать `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 репозитория для конкретного файла вместе с кодом для удобного код-ревью.

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

- репозиторий на GitHub
- официальный гайд по настройке
- Введение в nnn — YouTube

Categories:

- File managers (Русский)
- Console applications (Русский)