Режимы работы в Vim

Ты открываешь Vim — и не понимаешь, почему курсор не двигается, когда ты бьёшь по стрелкам. Потому что Vim — это не редактор. Это машина с переключателем передач, и пока ты не научишься переключать режимы, ты будешь стоять посреди дороги с задранным капотом.

Большинство редакторов — это одна большая печатная машинка: ткнул клавишу — получил символ. Предсказуемо, как кнопка в лифте. Vim устроен иначе. У него несколько режимов, и в каждом клавиши означают разное. Это не прихоть, а гениальная экономия: одна и та же d в одном режиме — команда, в другом — просто буква. Двести граммов кремния заменяют тебе половину клавиатуры.

Разберём эти состояния сознания по одному, чтобы ты больше не тыкался в него как слепой котёнок.

Основные режимы Vim

Нормальный режим (Normal Mode)

Это отправная точка. Vim запускается и замирает здесь, как процессор на векторе сброса. Ты не печатаешь — ты командуешь. Движение, удаление, копирование. Текст сам приходит в порядок, если знать опкоды.

Основные команды:

  • h, j, k, l — влево, вниз, вверх, вправо. Да, это те самые стрелки, только под рукой. Через неделю ты забудешь, что где-то есть настоящие, и будет тянуться к hjkl даже в браузере.
  • dd — снести текущую строку целиком. Гильотина без сантиментов.
  • yy — скопировать строку в буфер.
  • p — вставить скопированное после курсора.
  • u — отменить последнее изменение. Undo — это единственное место, где ещё живёт надежда.
  • Ctrl-R — вернуть отменённое. Кстати, история отмен у Vim длинная, как деревенская память.

Режим вставки (Insert Mode)

Здесь ты наконец-то становишься обычным человеком и просто набираешь текст. Ненадолго. Потому что чем дольше ты торчишь в Insert, тем меньше в тебе остаётся от хакера.

Переход в режим вставки:

  • i — вставка перед курсором.
  • I — в начало строки.
  • a — после курсора.
  • A — в конец строки.
  • o — новая строка ниже, и сразу в вставку.
  • O — новая строка выше.

Возврат в нормальный режим:

  • Esc — назад. Клавиша, которую ты нажмёшь миллион раз. Мозолистая, как ручки старого осциллографа.
  • C-[ — то же самое, если мизинец уже устал тянуться.
  • C-o — выполнить одну команду и вернуться во вставку, не выходя из неё. Странный, но полезный трюк.

Видео «insert-mode» не найдено (урок не готов или slug неверный).

Визуальный режим (Visual Mode)

В отличие от мыши, здесь выделение — это не мазня, а точный математический захват области памяти. Ты задаёшь границы и объявляешь, что с этим делать. Три подвида: обычный, построчный и блочный.

Переход в визуальный режим:

  • v — обычный визуальный (посимвольно).
  • V — построчный. Самый честный: строки в Vim — это святое.
  • Ctrl-V — блочный. Вот здесь начинается магия: правишь сразу колонку символов, как будто вырезаешь ровный прямоугольник из листа. Идеально для таблиц, выравнивания, комментариев.

Видео «visual-lines» не найдено (урок не готов или slug неверный).

Внимание! Режим выделения (--Select--) — реликт из мира обычных редакторов. Здесь можно начать набирать текст, и выделенное просто исчезнет, как перезаписанный байт. Спасательный круг для тех, кто ещё не перестроил мозг.

Вызывается по Ctrl-g.

Режим выделения (Select) — открыть страницу урока

Основные команды:

  • d — удалить выделенное.
  • y — скопировать выделенное.
  • > — сдвинуть выделенное вправо (по одной вкладке за раз).
  • < — сдвинуть влево.

Командный режим (Command Mode)

Это разговор с редактором напрямую, без посредников. Сохранение, выход, поиск, замена — всё здесь. Двоеточие — как приглашение C> в старом мониторе: ждём команду.

Переход в командный режим:

  • : — ввод команды.
  • / — поиск вперёд.
  • ? — поиск назад.

Основные команды:

  • :w — сохранить файл. Самый частый набор символов на свете.
  • :q — выйти из Vim.
  • :wq — сохранить и выйти. Классика, которую в народе зовут «спасите-я-застрял».
  • :e filename — открыть файл.
  • :bd — закрыть текущий буфер.
  • :split — разделить окно по горизонтали.
  • :vsplit — разделить по вертикали. Два буфера бок о бок, как два процесса на одном ядре.

Видео «splits» не найдено (урок не готов или slug неверный).

Режим замены (Replace Mode)

Здесь новый символ не вставляется, а садится ровно на место старого — байт в байт, без сдвига адресов. По сути — прямое редактирование памяти. Полезно, когда структура данных священна и костылять её списком неположено.

Переход в режим замены:

  • R — режим замены.

Возврат в нормальный режим:

  • Esc — назад к обычной жизни.

Заключение

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

Отростки hjkl, вросшие в подкорку. dd, летящая быстрее, чем мышь успевает дёрнуться. Это уже не привычка — это рефлекс, как у сомелье, который по запаху отличает подвал от подъезда.

Освой режимы — и Vim перестанет быть загадкой. А потом однажды поймаешь себя на том, что ищешь : в чужом блокноте. И это будет означать, что кремний тебя принял.