Vim — текстовый редактор, который живёт в окне терминала. У него нет привычной панели кнопок: всё делается с клавиатуры, а файл открывается командой прямо в той же строке, где вы запускаете другие команды. Vim стоит почти на всех серверах с Linux, поэтому его знание — это умение поправить файл настроек на чужой машине, где нет ни мыши, ни графического рабочего стола.
Главное отличие Vim от всех остальных редакторов — режимы. В обычном редакторе нажатие клавиши «d» ставит букву «d». В Vim это зависит от того, в каком вы режиме: в режиме вставки появится буква, а в обычном режиме — сработает команда удаления. Именно из-за этого новичок открывает Vim, печатает текст и не понимает, что происходит. Привыкание занимает несколько дней, зато потом руки не уходят с основного ряда клавиш и правка идёт заметно быстрее.
Что умеет Vim
- Три основных режима — обычный (команды), вставка (набор текста) и визуальный (выделение). Переключение: клавиша «i» — в режим вставки, «Esc» — обратно в обычный. Команды редактора набираются в строке, которая начинается с двоеточия.
- Команды из букв, которые складываются между собой — «d» это «удалить», «w» это «слово», вместе «dw» удаляет слово. Поставьте перед командой цифру — она повторится: «3dw» удалит три слова. Этот язык команд не нужно заучивать целиком, достаточно десятка сочетаний.
- Работа без мыши — перемещение по тексту клавишами h, j, k, l, прыжок к началу и концу файла, переход к нужной строке по номеру, поиск по тексту с подсветкой совпадений.
- Отмена и возврат на много шагов назад — Vim помнит дерево правок, а не только последнее действие, так что вернуться к старой версии текста можно даже после отмены отмены.
- Макросы — вы один раз записываете последовательность действий и повторяете её на сотне строк. Удобно, когда нужно одинаково переделать длинный список или выгрузку из таблицы.
- Разделение окна и вкладки — один файл можно открыть в двух половинах окна, рядом открыть второй и копировать между ними, не выходя из терминала.
- Подсветка синтаксиса и отступы — Vim узнаёт десятки языков программирования и форматов настроек, подсвечивает их и сам расставляет отступы.
- Файл настроек — всё поведение редактора описывается строками в одном текстовом файле. Его удобно хранить вместе с остальными своими настройками и переносить на новый компьютер.
- Расширения — к Vim есть тысячи дополнений: файловое дерево сбоку, подсказки по коду, работа с системой контроля версий, цветовые схемы.
Отдельно существует gVim — та же программа, но в собственном окне, с меню и полосой прокрутки. Для первого знакомства она удобнее: можно подглядывать в меню, пока команды не отложились в памяти.
Кому подходит
- Тем, кто заходит на сервер по SSH: там чаще всего нет ничего, кроме Vim и его урезанного предшественника vi.
- Системным администраторам и разработчикам, которые много правят файлы настроек, логи и скрипты.
- Тем, кому мешает мышь: после привыкания правка текста идёт без отрыва рук от клавиатуры.
- Владельцам старых и слабых компьютеров: Vim запускается мгновенно и открывает файлы в сотни мегабайт, на которых тяжёлые редакторы задумываются.
- Не подходит тем, кому нужно просто быстро поправить текст один раз: для этого проще взять любой обычный редактор. Vim окупается, только если пользоваться им постоянно.
Плюсы
- Есть почти на любом сервере и компьютере с Linux или macOS
- Запускается мгновенно, не боится огромных файлов
- Вся работа с клавиатуры, без переключения на мышь
- Открытый код, бесплатно, без рекламы и аккаунта
- Настройки и расширения переносятся одним файлом
Минусы
- Крутое обучение: первые дни непонятно даже как выйти
- Интерфейс и справка на английском
- Из коробки нет подсказок по коду — нужны расширения
- Чтобы собрать удобную среду, придётся потратить время на настройку
Сколько стоит
Vim бесплатный, с открытым кодом, без платной версии и встроенных покупок. При этом автор называл его «благотворительной программой»: в справке редактора есть раздел с просьбой поддержать детей в Уганде. Это именно просьба — на работу программы она никак не влияет, все возможности доступны сразу и всем.
Как установить
- В Linux Vim обычно уже установлен. Проверьте командой с ключом версии; если его нет, поставьте пакет vim через менеджер пакетов вашего дистрибутива.
- В macOS в системе есть vi и Vim из коробки. Свежую версию ставят через менеджер пакетов Homebrew.
- В Windows скачайте установщик с официального сайта Vim: он поставит и консольную версию, и gVim с отдельным окном.
- В Windows Vim можно поставить и встроенным менеджером пакетов — одной командой в PowerShell.
- Сразу после установки запустите встроенный учебник командой vimtutor: это получасовой урок прямо в редакторе, который даёт достаточный минимум.
Частые вопросы
Как выйти из Vim?
Нажмите «Esc», чтобы выйти из режима вставки, и наберите :q с клавишей «Ввод». Если файл изменён, Vim не даст выйти просто так: :wq сохранит и закроет, а :q! закроет без сохранения.
Чем Vim отличается от Neovim?
Neovim — это ответвление от Vim, где переписали внутреннее устройство. Команды и логика работы те же, поэтому навык переносится один в один. Разница в настройке: в Neovim её принято писать на языке Lua, а встроенная поддержка языковых серверов делает его ближе к полноценной среде разработки. Vim при этом более предсказуем и чаще оказывается предустановлен на серверах.
Есть ли русский интерфейс?
Полноценного русского интерфейса нет: справка, все команды и названия настроек — на английском. При русской локали системы часть системных сообщений и меню в gVim выводится по-русски, но рассчитывать на это не стоит.
Можно ли писать в Vim на русском?
Да, с текстом на любом языке Vim работает нормально. Неудобство одно: команды обычного режима привязаны к латинским буквам, поэтому при русской раскладке они не срабатывают. Решается либо переключением раскладки, либо настройкой, которая учит Vim понимать русские клавиши как команды.
Подойдёт ли Vim для программирования?
Да, но не сразу из коробки. Подсветка синтаксиса есть изначально, а подсказки по коду, переход к определению функции и работа с Git добавляются расширениями. Если вы не хотите собирать среду сами, возьмите обычный редактор кода с готовым режимом управления как в Vim — такой режим есть почти во всех популярных редакторах.
