Zsh Vi Mode - Когда консоль становится продолжением Vim
Знакома ли вам ситуация, когда вы, будучи преданным фанатом Vim, пытаетесь включить vi-mode в Zsh, а в итоге получаете нечто… ну, скажем так, "не совсем Vim"? Вроде бы и переключение режимов есть, и базовые движения, но ощущение, что чего-то не хватает, не покидает. Медленно, неуклюже, не хватает привычных команд и той самой "Vim-магии". Если вы киваете головой, то этот обзор для вас. Сегодня мы поговорим о проекте, который обещает вернуть вам радость работы в консоли, — zsh-vi-mode от jeffreytse.

Что это за зверь и почему он нужен каждому Vim-еру в Zsh?
zsh-vi-mode (или ZVM) — это не просто очередной плагин для Zsh. Это полноценная попытка перенести тот самый, родной и любимый Vim-опыт прямо в вашу командную строку. Разработчик, jeffreytse, явно столкнулся с теми же проблемами, что и многие из нас, и решил их кардинально. Вместо того чтобы мириться с ограничениями стандартного vi-mode, он создал решение, которое:
- Работает как часы: Забудьте о задержках при переключении режимов или выполнении команд.
- Ощущается как Vim: Поддерживает множество привычных команд и текстовых объектов.
- Легко настраивается: Позволяет адаптировать поведение под свои нужды.
Кому это нужно? В первую очередь, всем, кто активно использует Zsh и Vim (или Neovim). Если вы проводите много времени в терминале, набирая команды, редактируя пути и быстро перемещаясь по истории, ZVM станет вашим незаменимым помощником. Он превратит рутинную работу в нечто более интуитивное и продуктивное.
Ключевые фичи, которые заставят вас улыбнуться
Давайте посмотрим, что именно делает zsh-vi-mode таким особенным.
1. Настоящий Vim-опыт без компромиссов
Забудьте о "почти как Vim". ZVM стремится к максимальной аутентичности. Вы получаете:
- Мгновенное переключение режимов:
ESCилиCTRL-[— и вы в Normal mode. При этом можно настроить свои "горячие" клавиши для выхода из режима вставки, например,jjилиjk, что очень удобно для тех, кто привык к этому в Vim. - Полный набор движений:
w,b,e,f{char},t{char},$,0,^— все на месте и работает именно так, как вы ожидаете. Перемещаться по длинным командам становится так же легко, как по строкам кода. - Текстовые объекты:
vi",va(,di{,ca[— эти команды, позволяющие манипулировать блоками текста, теперь доступны прямо в командной строке. Это невероятно ускоряет редактирование сложных команд.

2. Умные операции с текстом и окружениями (Surrounds)
Одна из самых мощных фич Vim — это работа с "окружениями". ZVM переносит её в Zsh.
- Добавление, изменение, удаление окружений: Представьте, что у вас есть команда
ls -l /path/to/my/files. Вы хотите заключить/path/to/my/filesв кавычки. С ZVM это делается парой нажатий:vi/(выделить путь) ->S"(добавить кавычки). Или, например, изменить скобки с()на[]:cs()[]`. Это просто магия! - Инкремент/декремент значений: Помните
CTRL-AиCTRL-Xв Vim? Они позволяют увеличивать или уменьшать числа, булевы значения, дни недели, месяцы и даже операторы. ZVM привносит эту функциональность в Zsh. Нужно изменитьcount=9наcount=10? Просто наведите курсор на9и нажмитеCTRL-A. Это работает даже с шестнадцатеричными и двоичными числами, а также сtrue/false,on/off,&&/||и так далее. Мелочь, а как приятно!
3. Глубокая интеграция с системой и удобство работы
ZVM не ограничивается только эмуляцией Vim. Он расширяет возможности командной строки, делая её более интегрированной с вашей ОС.
- Системный буфер обмена: Наконец-то! Копирование (
yy,yw) и вставка (p,P) работают с системным буфером обмена. Больше не нужно мучиться с выделением мышью или промежуточными файлами. Это особенно актуально для тех, кто работает в WSL или удаленно. - Открытие ссылок и файлов (
gx): Навели курсор на URL в командной строке? Нажмитеgx, и ссылка откроется в вашем браузере по умолчанию. То же самое с путями к файлам —gxоткроет файл в соответствующем приложении. Это невероятно удобно, когда вы работаете с логами или документацией. - Редактирование команды во внешнем редакторе (
vv): Иногда команда становится слишком длинной или сложной для редактирования прямо в строке. Нажмитеvvв Normal mode, и текущая команда откроется в вашем$EDITOR(Vim, Neovim, VS Code — что угодно!). Отредактируйте, сохраните, закройте — и обновленная команда вернется в Zsh.
Под капотом: Чистый Zsh и новый движок
Что особенно приятно, zsh-vi-mode написан на чистом Zsh, без сторонних зависимостей. Это означает высокую производительность и минимальный "вес" плагина.
Интересно, что ZVM предлагает собственный движок для обработки нажатий клавиш — NEX, который позиционируется как более быстрый и отзывчивый, чем стандартный ZLE (Zsh Line Editor). Это позволяет достичь той самой "Vim-скорости" и отзывчивости, которую мы так ценим. При этом, если вдруг возникнут проблемы, всегда можно переключиться обратно на ZLE.
Плагин также использует "ленивую" инициализацию (lazy keybindings), что значительно ускоряет запуск терминала, поскольку все привязки клавиш загружаются только при первом входе в Normal mode.
Как начать пользоваться?
Установка zsh-vi-mode максимально проста и поддерживается большинством популярных менеджеров плагинов для Zsh: Antigen, zplug, zgen, zinit, Oh My Zsh!, Antibody, Zap, Zim. Если вы не используете менеджеры, есть и ручная установка.
Например, для Oh My Zsh!:
git clone https://github.com/jeffreytse/zsh-vi-mode $ZSH_CUSTOM/plugins/zsh-vi-mode
# Затем добавьте zsh-vi-mode в список плагинов в вашем .zshrc
plugins+=(zsh-vi-mode)
После установки не забудьте перезапустить Zsh или выполнить source ~/.zshrc.
Выводы: Стоит ли попробовать? Однозначно да!
Если вы Vim-пользователь и работаете в Zsh, zsh-vi-mode — это маст-хэв. Он решает давнюю проблему неполноценного vi-mode в Zsh, предоставляя полноценный, быстрый и кастомизируемый Vim-опыт прямо в вашей командной строке.
Представьте, насколько продуктивнее станет ваша работа, когда вы сможете редактировать команды с той же скоростью и эффективностью, что и код в любимом редакторе. Умные текстовые операции, интеграция с буфером обмена, возможность открывать ссылки и файлы — все это делает ZVM не просто плагином, а настоящим улучшением качества жизни разработчика.
Не откладывайте, попробуйте zsh-vi-mode сегодня, и ваша консоль заиграет новыми красками!