VIM

Vim — текстовый редактор, который работает прямо в терминале и на экран выводит только текст: ни кнопок, ни меню, ни мыши (по умолчанию). Именно в этом его сила и его слава «неудобного редактора, из которого не выйти».

Он полноэкранный: занимает весь терминал, переключает его в режим прямого ввода и возвращает обратно, когда вы выходите. Поэтому Vim и живёт в разделе «Терминал и оболочка» — он ровно тот пример программы, которая с терминалом работает вплотную.

Модальность: главное, что надо понять

Всё остальное в Vim — следствие одного решения: клавиши означают разное в зависимости от режима.

Режим Что делают клавиши Как войти
Обычный (normal) Двигают курсор, удаляют, копируют — это «режим команд» Esc из любого другого
Вставки (insert) Набирают текст, как в обычном редакторе i, a, o
Визуальный (visual) Выделяют текст v, V, Ctrl+v
Командный Вводят команды после : :

Ключевая мысль: обычный режим — основной, а вставка нужна время от времени. Люди, которые считают Vim неудобным, обычно пытаются в нём постоянно печатать: в обычном режиме набранное превращается в команды, и получается каша.

Первые шаги: сохранить и выйти

$ vim file.txt      # открыть файл
$ vim               # открыть без файла

Внутри:

Клавиши Действие
i Войти в режим вставки (перед курсором)
Esc Вернуться в обычный режим — нажимать, когда не понимаете, что происходит
:w Сохранить
:q Выйти
:wq или ZZ Сохранить и выйти
:q! Выйти без сохранения

Аварийный случай «застрял и не могу выйти» решается именно Esc, затем :q! и Enter. Спасает и Ctrl+c, если Esc почему-то съедается терминалом.

Движение — вместо стрелок

Стрелки работают, но смысл Vim в том, что руки не уходят с основного ряда:

Клавиши Куда
h j k l влево, вниз, вверх, вправо
w / b на слово вперёд / назад
0 / $ начало / конец строки
gg / G начало / конец файла
:42 строка 42, :42 + G — то же
/текст, затем n поиск, затем следующее совпадение
% на парную скобку
{ / } на пустую строку вперёд / назад

Привычка «одна буква — одно движение» экономит не секунды, а внимание: за час работы это сотни переключений на стрелки, которые здесь не нужны.

Правка, которая повторяется

Клавиши Действие
x / dd удалить символ / строку
dw / diw удалить слово / слово без пробелов вокруг
ciw изменить слово целиком (удалить и сразу вставить)
yy / p скопировать строку / вставить после
u / Ctrl+r отменить / вернуть отменённое
. повторить последнее изменение

Точка — самый недооценённый приём: правку можно повторить одним нажатием, а вместе с поиском (/, n, .) она превращается в «сделать то же самое в следующем месте».

Команды после :

Это старые команды редактора ex, которые живут внутри Vim:

:s/старое/новое/            " заменить в текущей строке
:%s/старое/новое/g          " во всём файле
:%s/старое/новое/gc         " с подтверждением каждого
:set number                 " включить нумерацию строк
:set expandtab              " отступы пробелами
:e другой_файл              " открыть другой файл
:sp / :vsp                  " разделить окно по горизонтали / вертикали
:help тема                  " встроенная справка — работает без сети

:help — не формальность: у Vim полностью документированная встроенная справка, и :help ciw объяснит команду точнее любой статьи.

Настройки: ~/.vimrc

Настройки — обычный текстовый файл, который Vim читает при запуске. Минимум, из-за которого к Vim возвращаются:

set number            " нумерация строк
set tabstop=4         " ширина табуляции
set shiftwidth=4      " ширина автоотступа
set expandtab         " табуляция пробелами
set smartindent       " умные отступы
set ignorecase        " поиск без учёта регистра
set smartcase         " ...но с большой буквы — с учётом
set hlsearch          " подсветка найденного

Подробный разбор этих опций — на отдельной странице: «Отступы».

Работа с кодом

Vim хорошо стыкуется с внешними инструментами, и это его вторая жизнь — им пользуются как редактором кода:

  • ctags — строит файл tags с определениями функций; после этого переход к определению — одна команда. Разбор: «Перемещение по функциям».
  • :make внутри Vim запускает сборку и показывает ошибки в отдельном окне.
  • Плагины ставят менеджерами (например, vim-plug), файлы которых лежат в ~/.vim/.
  • Neovim (nvim) — современная ветка с тем же языком команд: многие плагины и настройки переносятся почти без изменений. Если выбираете сегодня, посмотрите и его.

Как учиться

$ vimtutor        # встроенный интерактивный урок, ~30 минут

vimtutor — лучший способ начать: он ведёт по упражнениям прямо в редакторе, не требуя запоминать список клавиш заранее. Если хочется игровой формы — есть браузерная игра https://vim-adventures.com/: в ней движение по лабиринту делается клавишами Vim.

Книги

Копии у нас, чтобы не зависеть от чужих сайтов:

Источники

  • Встроенная справка: :help, :help user-manual, :help options — сама по себе источник, доступный без сети.
  • man 1 vim, man 1 vimtutor, man 1 ctags.
  • Книги из раздела «Книги» — они же и первоисточники по приёмам.

Что ещё не проверено

  • Команды и режимы описаны по встроенной справке и документации; в моём окружении Vim не установлен, поэтому нажатия я не проверял. Проверено другое: файлы книг отдаются с сайта (обе ссылки отвечают 200), а страницы «Отступы» и «Перемещение по функциям» — на месте.
Оценка статьи 0

Комментарии

Пока комментариев нет.