Консольный файловый менеджер yazi

Долгое время я пользовался mc, но он всё же не казался лично для меня достаточно удобным, потому я перешёл на yazi.

sudo apt install -y curl file

curl -fsSL https://yazi-rs.github.io/builds/yazi-keyring.gpg \
  | sudo tee /usr/share/keyrings/yazi-keyring.gpg >/dev/null

echo 'deb [signed-by=/usr/share/keyrings/yazi-keyring.gpg] https://yazi-rs.github.io/builds/ stable main' \
  | sudo tee /etc/apt/sources.list.d/yazi.list >/dev/null

sudo apt update
sudo apt install -y yazi

Запуск:

yazi

Указать micro как редактор

Открыть настройки bash:

micro ~/.bashrc

Добавить:

export EDITOR=micro
export VISUAL=micro

Применить:

source ~/.bashrc

Windows-подобные сочетания клавиш

Создать каталог с конфигом:

mkdir -p ~/.config/yazi
micro ~/.config/yazi/keymap.toml

Добавить в него:

# Копировать
[[mgr.prepend_keymap]]
on   = "<C-c>"
run  = "yank"
desc = "Копировать"

# Вырезать
[[mgr.prepend_keymap]]
on   = "<C-x>"
run  = "yank --cut"
desc = "Вырезать"

# Вставить
[[mgr.prepend_keymap]]
on   = "<C-v>"
run  = "paste"
desc = "Вставить"

# Удалить в корзину
[[mgr.prepend_keymap]]
on   = "<Delete>"
run  = "remove"
desc = "Удалить в корзину"

# Удалить безвозвратно
[[mgr.prepend_keymap]]
on   = "<S-Delete>"
run  = "remove --permanently"
desc = "Удалить безвозвратно"

# Переименовать
[[mgr.prepend_keymap]]
on   = "<F2>"
run  = "rename --cursor=before_ext"
desc = "Переименовать"

# Создать файл
[[mgr.prepend_keymap]]
on   = "<C-n>"
run  = "create"
desc = "Создать файл"

# Создать папку
[[mgr.prepend_keymap]]
on   = "<C-S-n>"
run  = "create --dir"
desc = "Создать папку"

# Выделить всё
[[mgr.prepend_keymap]]
on   = "<C-a>"
run  = "toggle_all --state=on"
desc = "Выделить всё"

# Поиск по именам в текущей папке
[[mgr.prepend_keymap]]
on   = "<C-f>"
run  = "find --smart"
desc = "Найти файл"

# Перейти по указанному пути
[[mgr.prepend_keymap]]
on   = "<C-l>"
run  = "cd --interactive"
desc = "Перейти по пути"

# Вернуться в родительскую папку
[[mgr.prepend_keymap]]
on   = "<Backspace>"
run  = "leave"
desc = "На уровень выше"

# Новая вкладка
[[mgr.prepend_keymap]]
on   = "<C-t>"
run  = "tab_create --current"
desc = "Новая вкладка"

[[mgr.prepend_keymap]]
on   = "<C-Left>"
run  = "tab_switch -1 --relative"
desc = "Предыдущая вкладка"

[[mgr.prepend_keymap]]
on   = "<C-Right>"
run  = "tab_switch 1 --relative"
desc = "Следующая вкладка"

# Закрыть вкладку
[[mgr.prepend_keymap]]
on   = "<C-w>"
run  = "close"
desc = "Закрыть вкладку"

# В полях ввода Esc сразу отменяет действие,
# а не переключает поле в командный режим Vim
[[input.prepend_keymap]]
on   = "<Esc>"
run  = "close"
desc = "Отмена"

Итого будет работать так:

ДействиеСочетание
КопироватьCtrl+C
ВырезатьCtrl+X
ВставитьCtrl+V
Удалить в корзинуDelete
Удалить безвозвратноShift+Delete
Создать файлCtrl+N
Создать папкуCtrl+Shift+N
Выделить всёCtrl+A
ПоискCtrl+F
Перейти по путиCtrl+L
Новая вкладкаCtrl+T
Предыдущая вкладкаCtrl+←
Следующая вкладкаCtrl+→
Закрыть вкладкуCtrl+W
Выйти из Yaziq
Отмена действия в полях вводаEsc

Некоторые сочетания по умолчанию:

Открыть файл или папкуEnter
Перейти назад или Backspace
Перейти вперёд
ПомощьF1
ПереименоватьF2
Показать/скрыть скрытые файлы/папки.
Переименоватьr

Оставаться в выбранной папке после выхода

Добавить в ~/.bashrc:

function y() {
    local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd

    command yazi "$@" --cwd-file="$tmp"

    IFS= read -r -d '' cwd < "$tmp"

    if [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && [ -d "$cwd" ]; then
        builtin cd -- "$cwd"
    fi

    command rm -f -- "$tmp"
}

Применить:

source ~/.bashrc

Оставить комментарий