Режимы работы в 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.
Основные команды:
d— удалить выделенное.y— скопировать выделенное.>— сдвинуть выделенное вправо (по одной вкладке за раз).<— сдвинуть влево.
Командный режим (Command Mode)
Это разговор с редактором напрямую, без посредников. Сохранение, выход, поиск, замена — всё здесь. Двоеточие — как приглашение C> в старом мониторе: ждём команду.
Переход в командный режим:
:— ввод команды./— поиск вперёд.?— поиск назад.
Основные команды:
:w— сохранить файл. Самый частый набор символов на свете.:q— выйти из Vim.:wq— сохранить и выйти. Классика, которую в народе зовут «спасите-я-застрял».:e filename— открыть файл.:bd— закрыть текущий буфер.:split— разделить окно по горизонтали.:vsplit— разделить по вертикали. Два буфера бок о бок, как два процесса на одном ядре.
Видео «splits» не найдено (урок не готов или slug неверный).
Режим замены (Replace Mode)
Здесь новый символ не вставляется, а садится ровно на место старого — байт в байт, без сдвига адресов. По сути — прямое редактирование памяти. Полезно, когда структура данных священна и костылять её списком неположено.
Переход в режим замены:
R— режим замены.
Возврат в нормальный режим:
Esc— назад к обычной жизни.
Заключение
Хитрость не в том, что Vim сложный, а в том, что он честный. Он не прячет своё устройство за иконками и всплывающими менюшками — он вываливает на тебя несколько режимов и говорит: разберись, если ты программист, а не пользователь. И когда ты перестаёшь сопротивляться и начинаешь думать как редактор, происходит то же, что всегда происходит с железом: ты перестаёшь с ним бороться и начинаешь на нём играть.
Отростки hjkl, вросшие в подкорку. dd, летящая быстрее, чем мышь успевает дёрнуться. Это уже не привычка — это рефлекс, как у сомелье, который по запаху отличает подвал от подъезда.
Освой режимы — и Vim перестанет быть загадкой. А потом однажды поймаешь себя на том, что ищешь : в чужом блокноте. И это будет означать, что кремний тебя принял.