Прежде чем выучить хоть одну команду, важно понять, зачем вообще существует Vim и почему миллионы инженеров спустя полвека после появления его предка продолжают редактировать код именно так. Эта глава - не про "как набрать букву". Она про идею, которая делает Vim принципиально другим инструментом: про модальное редактирование. Если вы поймёте идею, все последующие команды лягут в голову как части единой системы, а не как набор странных горячих клавиш. Если не поймёте - будете воевать с редактором и в какой-то момент бросите.Часть I. Основы
Поэтому потратьте на эту главу время. Здесь нет упражнений "нажми и почувствуй" - они начнутся со следующей главы. Здесь - фундамент.
Зачем это нужно
Подумайте, чем вы реально занимаетесь, когда "пишете код". По ощущениям кажется, что вы печатаете текст. На самом деле большую часть времени вы его не печатаете, а редактируете: переименовываете переменную, переносите блок, удаляете аргумент, оборачиваете выражение в скобки, меняете местами две строки, исправляете опечатку тремя словами выше. Набор нового текста с нуля - меньшая часть работы программиста.
Обычные редакторы оптимизированы под ввод символов. Всё остальное - навигация и манипуляции - навешано сверху: мышь, выделение с зажатым Shift, модификаторы Ctrl/Alt/Cmd, контекстные меню. Vim переворачивает приоритеты: он оптимизирован под редактирование уже существующего текста, а ввод - это лишь один из режимов. Отсюда и название идеи - модальное редактирование.
Что такое модальное редактирование
В обычном (немодальном) редакторе клавиша всегда означает одно и то же. Нажали d - в текст вставилась буква "d". Чтобы что-то сделать с текстом, не вводя его, нужны модификаторы: Ctrl+C копировать, Ctrl+V вставить, Home, End, стрелки, выделение мышью.
Vim вводит понятие режима (mode). Одна и та же клавиша делает разное в зависимости от того, в каком режиме вы находитесь. Базовых режимов несколько, но на старте важны три:
Код: Выделить всё
Режим | Назначение | Что делают обычные буквы
---------------------+----------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------
Normal (нормальный) | Навигация и команды редактирования. Это режим "по умолчанию", в нём вы проводите большую часть времени | Буквы - это команды: d удалить, y копировать, w прыгнуть на слово вперёд
Insert (вставка) | Собственно набор текста - как в обычном редакторе | Буквы - это текст, печатаются как есть
Visual (визуальный) | Выделение текста для последующей операции | Буквы - это движения, расширяющие выделение
- Command-line режим - то, что вы открываете двоеточием :. Это прямое наследие строчного редактора ex (а тот, в свою очередь, вырос из ещё более старого ed): vi был "визуальной" (:visual) надстройкой над ex, и команды вроде :substitute и :global, которым посвящена целая часть курса, - это и есть тот самый ex-язык, доступный из режима командной строки.
- Replace-режим (R) - печать поверх существующего текста, замещая символы, а не вставляя.
- Operator-pending режим - короткое промежуточное состояние, в которое Vim входит после оператора (например, нажав d) и ждёт движение или текстовый объект. Именно его существование делает возможной всю грамматику "оператор + движение", о которой ниже.
Ключевой момент, который ломает интуицию новичка: в Normal-режиме клавиатура - это не пишущая машинка, а пульт команд. Вся буквенная раскладка превращается в набор глаголов и движений. Нажав dw, вы не печатаете "dw" - вы отдаёте команду "delete word" (удалить слово). Нажав gg, вы прыгаете в начало файла.
Почему это вообще лучше, а не просто иначе
Возникает резонный вопрос: зачем переключать режимы, если можно навесить модификаторы? Ответ в трёх вещах.
1. Домашний ряд и отсутствие аккордов. В немодальном редакторе сложное действие - это "аккорд": зажать Ctrl+Shift+K, тянуться мизинцем к стрелкам, хвататься за мышь. Руки постоянно покидают домашний ряд клавиатуры (asdf - jkl;). В Vim команды - это последовательности одиночных нажатий обычных клавиш под пальцами. d, потом w. Меньше растяжений кисти, меньше нагрузка на запястья (об эргономике и профилактике RSI подробно в главе 32).
2. Композируемость - главный множитель. Это не просто "другая раскладка горячих клавиш", это грамматика. Команды Vim строятся из операторов (глаголов) и движений (существительных), которые свободно комбинируются. Выучив N движений и M операторов, вы получаете не N+M, а NxM команд. Знание работает как множитель. Эту грамматику мы разберём детально в части II (главы 05-09), но идею стоит увидеть уже сейчас:
Код: Выделить всё
d (оператор "удалить") + w (движение "слово") = dw - удалить до начала следующего слова
c (оператор "изменить") + w = cw - изменить слово (особый случай: cw ведёт себя как ce - меняет до КОНЦА слова, а не до начала следующего, как сделал бы dw; детали - в главе грамматики)
y (оператор "копировать") + $ (движение "до конца строки") = y$ - скопировать до конца строки
gU (оператор "в верхний регистр") + ap (текстовый объект "абзац") = gUap - весь абзац капсом
3. Скорость мысли. У этой идеи даже есть полуофициальный лозунг - "editing at the speed of thought", редактирование со скоростью мысли. Когда команды становятся рефлексом, вы перестаёте думать "как мне это сделать" и думаете только "что я хочу получить". Намерение "убрать содержимое этих скобок" превращается в ci( без сознательного усилия, как у опытного водителя переключение передачи.
Краткая история: vi -> Vim -> Neovim
Понимание происхождения помогает не удивляться странностям.
1976, vi. Билл Джой пишет редактор vi (от visual) для Unix. Контекст важен: Джой разрабатывал vi на терминале Lear Siegler ADM-3A, у которого попросту не было отдельных клавиш-стрелок для курсора - а глифы стрелок были напечатаны прямо на клавишах h j k l (и Escape стоял там, где сегодня Tab/Caps Lock). Отсюда hjkl как "лево-вниз-вверх-вправо" - это прямое наследие раскладки той клавиатуры, а не каприз. Дополнительный фон - общая медленность терминалов тех лет (соединение по линиям в 300 бод), где режимы экономили нажатия. Это не каприз, а археология.
1991, Vim. Брам Мооленаар создаёт Vi IMproved - "улучшенный vi". Vim сохраняет полную совместимость с vi, но добавляет многоуровневый undo, подсветку синтаксиса, сворачивание, скриптовый язык Vimscript, плагины. Десятилетиями Vim - стандарт де-факто для редактирования в терминале.
2014, Neovim. Форк Vim, выросший из желания модернизировать стареющую кодовую базу. Цели: чистая архитектура, встроенная поддержка асинхронности, Lua как первоклассный язык конфигурации и плагинов, протокол для внешних UI. Neovim не отменяет совместимость с Vim - почти весь ваш навык переносится один в один, - но открывает дверь к современным возможностям: нативный клиент LSP, интеграция Treesitter, богатейшая экосистема плагинов на Lua.
Состояние на 2026 год. Оба проекта живы и активно развиваются:
- Vim 9.1 - преимущественно стабилизирующий релиз с сотнями исправлений. Главное новшество линейки Vim 9 - язык Vim9script с настоящими классами и объектами, командой :defer для гарантированной очистки ресурсов и компиляцией команд, дающей прирост скорости в 10-100 раз. Синтаксис приближен к JavaScript/TypeScript: var вместо let, комментарии через #.
- Neovim 0.12 (вышел 29 марта 2026) - крупный релиз. Из проверяемых новшеств: встроенный менеджер плагинов vim.pack, расширенный набор парсеров и подсветки Treesitter, включённых в ядро по умолчанию, и нативное автодополнение в insert-режиме через vim.lsp.completion (включая автотриггер) поверх стандартной опции 'completeopt' - без отдельного плагина-движка. Помимо этого в релизной линейке заявлялся ряд более экспериментальных вещей (например, эксперименты с командной строкой и UI); конкретные имена команд и опций обязательно сверяйте с официальными release notes своей версии, прежде чем закладывать их в конфиг. Ещё с версии 0.11 (март 2025) у Neovim полностью нативный LSP-клиент - настройка через vim.lsp.config() и vim.lsp.enable(), без обязательных плагинов.
Почему стоит учить Vim именно в 2026Vim или Neovim - что учить в 2026? Короткий ответ: учите модальное редактирование - оно общее для обоих, и пусть это вас не парализует. Этот курс ведёт линию "грамматика Vim -> современный Neovim", потому что Neovim сегодня - центр инноваций (LSP, Treesitter, Lua, дистрибутивы). Но всё ядро навыка из частей I-IV работает в любом Vim. Практичная стратегия профи: Neovim как основной редактор там, где вы контролируете окружение, и сохранённая беглость в обычном Vim - для серверов, где нельзя ставить софт и где Vim почти всегда уже предустановлен. Подробное сравнение и выбор - в главе 24. Опытным пользователям с рабочим Vim-конфигом мигрировать без причины не обязательно.
Может показаться, что в эпоху мощных IDE и AI-ассистентов модальный редактор из 1970-х - анахронизм. На деле причин учить его сегодня даже больше, чем десять лет назад.
Скорость и точность редактирования. Это главное. Когда руки не покидают домашний ряд, а намерения выражаются короткими композируемыми командами, рутинные правки занимают доли секунды. Выгода не в одной героической команде, а в тысячах микро-операций за день, которые перестают вас тормозить.
Вездесущность. vi/Vim входит в POSIX и предустановлен практически на любой Unix-системе: сервер, контейнер, виртуалка, embedded-устройство, чужая машина по SSH. Навык переносится туда, где никакой VS Code не поставишь. Один раз выучили - пользуетесь везде и всегда.
Vim повсюду за пределами Vim. Модальное редактирование давно вышло за рамки самого редактора. IdeaVim - официальный Vim-движок во всех IDE от JetBrains. vscode-neovim встраивает настоящий Neovim в VS Code. Vimium/Tridactyl дают Vim-навигацию в браузере. set -o vi включает vi-режим в командной строке bash/zsh. Один словарь движений работает в редакторе, IDE, браузере и терминале - мышечная память окупается многократно (вся эта тема - глава 31).
Зрелая и живая экосистема (Neovim). В 2026 году вокруг Neovim сложился полноценный мир: менеджер плагинов lazy.nvim, движок автодополнения blink.cmp, fuzzy-пикеры Telescope/fzf-lua/snacks.picker, git-интеграция gitsigns/neogit/lazygit, файловый менеджер oil.nvim. Готовые дистрибутивы вроде LazyVim дают сборку уровня IDE из коробки и сегодня входят в число самых популярных способов начать с Neovim. Всё это мы соберём в частях V-VI.
Эргономика и долгий горизонт. Меньше тянуться к мыши - меньше нагрузка на плечо и кисть. Для профессии, где вы проводите за клавиатурой десятилетия, это не мелочь, а вопрос здоровья (глава 32).
Кривая обучения и реалистичные ожидания
Будьте честны с собой: первые дни вы будете медленнее, чем в привычном редакторе. Это нормально и неизбежно. Вы временно меняете отлаженный навык на новый. Классическая "J-образная" кривая: сначала провал в производительности, потом подъём выше прежнего уровня.
Что реалистично ожидать:
- Первый час. Самое страшное позади: вы научитесь входить и выходить из режимов, двигаться и - да - выходить из редактора (это отдельная глава 02, и над "как выйти из Vim" не зря шутит весь интернет). Уже будет дискомфортно, но работоспособно.
- Первая неделя. Базовые движения и правки войдут в рефлексы. Вы перестанете осознанно вспоминать, как удалить слово.
- Первый месяц. Грамматика (операторы + движения + текстовые объекты) станет вашим способом думать о тексте. Здесь происходит главный качественный скачок.
- Дальше - всю жизнь. Vim из тех инструментов, где всегда есть, что улучшить: макросы, регистры, :global, свой конфиг. Это не баг, а фича: инструмент растёт вместе с вами.
И ещё: не боритесь с собой силой воли там, где помогает инструмент. Главная вредная привычка новичка - зажимать hjkl или стрелки вместо осмысленных прыжков. Плагин hardtime.nvim мягко (или жёстко) отучает от этого. Антипаттерны и как их не нажить - глава 32.
Как устроен этот курс
Курс построен от фундамента к мастерству, семь частей:
- Часть I. Основы (главы 01-04) - философия, установка и выживание, перемещение, базовое редактирование. Минимум, чтобы работать.
- Часть II. Грамматика Vim (главы 05-09) - сердце курса. Операторы + движения, текстовые объекты, точка-команда, регистры, метки и прыжки. Именно здесь Vim "щёлкает" в голове.
- Часть III. Поиск и многофайловость (главы 10-15) - /, :substitute, всемогущая :global, буферы и окна, quickfix, навигация по проектам.
- Часть IV. Продвинутое редактирование (главы 16-19) - макросы, визуальный и блочный режимы, трюки вставки, свёртки и аббревиатуры.
- Часть V. Конфигурация (главы 20-23) - init.lua с разумными дефолтами 2026, маппинги и leader, основы Vimscript и Lua, менеджеры плагинов.
- Часть VI. Современный Neovim 2026 (главы 24-30) - что нового в Neovim, нативный LSP, автодополнение, Treesitter, fuzzy-поиск, git внутри редактора, дистрибутивы.
- Часть VII. Мастерство (главы 31-34) - Vim повсюду, эргономика и антипаттерны, рабочие рецепты и план, и финальная шпаргалка-справочник.
- Клавиши и команды - в оригинале латиницей и оформлены как код: dw, :wq, gg.
- <Esc>, <CR> (Enter), <C-d> (Ctrl+D), <leader> - стандартная Vim-нотация для специальных клавиш.
- Практические примеры даны в формате было -> нажимаем -> стало, где █ обозначает позицию курсора.
- Если фича специфична для Neovim или для Vim 9 - это всегда указано явно.
Несколько ориентиров, которые стоит держать в голове с самого начала, чтобы не учиться по устаревшим материалам:
- Думайте грамматикой, а не комбинациями. С первого дня воспринимайте команды как "глагол + существительное" (оператор + движение/объект), а не как горячие клавиши для заучивания. Это окупится в части II.
- Для нового Neovim-конфига - Lua, а не Vimscript. Стандарт 2026 - init.lua. Vimscript остаётся для классического Vim и легаси; новые Vim-скрипты, если уж пишете, - на Vim9script. Подробности в главах 20 и 22.
- Не гонитесь за каждой новинкой сразу. vim.pack в 0.12 и ui2 - отличные, но vim.pack пока без ленивой загрузки, а часть UI-новшеств помечена экспериментальными. Для рабочего конфига 2026 связка lazy.nvim + blink.cmp остаётся надёжным выбором (главы 23, 26).
- Новичку в Neovim - LazyVim как рабочая основа, kickstart.nvim как учебник. Живите на готовом дистрибутиве, но в свободное время разберите минимальный однофайловый kickstart.nvim, чтобы не зависеть от "магии" (глава 30).
- Учитесь в бою. Лучшая практика обучения - сделать Vim основным редактором и брать по 1-2 новые команды в неделю, а не зубрить справочник.
- Воспринимать Vim как "блокнот с горячими клавишами". Если вы пытаетесь печатать в Normal-режиме и удивляетесь, почему буквы "прыгают и удаляют текст", - вы ещё не приняли идею режимов. Это самый частый барьер. Вернитесь к разделу про модальность.
- Сразу ставить гору плагинов и копировать чужой большой конфиг. Без понимания основ вы получите хрупкую систему, которую не сможете чинить. Сначала - голый редактор и грамматика, конфиг и плагины - в частях V-VI.
- Учиться по устаревшим гайдам. Многие популярные статьи всё ещё показывают require('lspconfig').server.setup{} (в 0.11+ это легаси-путь - нужны vim.lsp.config/vim.lsp.enable) или старую конфигурацию nvim-treesitter, которая в 2026 несовместима после переписывания плагина. Сверяйтесь с версией.
- Пытаться выучить всё за один присест. Перегруз ведёт к фрустрации и откату на старый редактор. Дозируйте.
- Бросать на "J-образном провале". Первые дни медленнее - это запланированная часть пути, а не сигнал, что "Vim не для вас".
Эта глава концептуальная, поэтому упражнения - на осмысление, а не на нажатия. Полноценная практика начнётся в главе 02.
- Самопроверка понимания режимов. Не открывая редактор, объясните своими словами (можно вслух или письменно), что произойдёт, если в Normal-режиме нажать d, и что - если ту же d нажать в Insert-режиме. Почему это разное?
- Найдите свой Vim. Проверьте в терминале, что у вас установлено: выполните vim --version и nvim --version. Запишите версии. Если Neovim нет - отметьте это; установку разберём в главе 02.
- Декомпозиция команды. Дана команда ci". Не зная пока точного синтаксиса, попробуйте угадать её части по логике "оператор + объект": какой здесь предполагаемый глагол, а какое существительное? (Подсказка: c - change, i - inner, " - кавычки.) Сверитесь с собой в главе 06.
- Инвентаризация ваших правок. В течение одного рабочего дня в привычном редакторе понаблюдайте за собой и запишите 5 самых частых действий с текстом (например: "переименовать переменную", "удалить аргумент функции", "перенести строку"). Этот список - ваша личная карта того, что Vim ускорит в первую очередь.
- Прикиньте план. Глядя на оглавление курса, отметьте 2-3 главы, которые вам нужны для работы максимально срочно (например, поиск и замена - глава 11, или настройка LSP - глава 25). Это не значит, что туда надо прыгать сразу, но полезно видеть цель.
- (Опционально, на будущее.) Если Vim/Neovim уже установлен и не терпится - запустите в терминале команду vimtutor и пройдите хотя бы первый урок. Это безопасный встроенный тренажёр, из которого легко выйти. Подробный разбор "как выйти" - в начале следующей главы.
- Модальное редактирование - ядро идеи Vim: одна клавиша значит разное в разных режимах. В Normal-режиме клавиатура - это пульт команд, а не пишущая машинка.
- Три базовых режима: Normal (команды и навигация, основной), Insert (набор текста), Visual (выделение).
- Сила Vim - в композируемости: команды строятся из операторов и движений по правилам грамматики, и знание работает как множитель (NxM), а не сумма.
- Линия эволюции: vi (1976) -> Vim (1991) -> Neovim (2014). В 2026 актуальны Vim 9.1 (с Vim9script) и Neovim 0.12 (встроенные Treesitter и LSP, vim.pack, нативное автодополнение).
- Учить Vim в 2026 стоит ради скорости и точности редактирования, вездесущности, переносимости навыка во все инструменты (IDE/браузер/shell), зрелой экосистемы Neovim и эргономики.
- Кривая обучения J-образная: первые дни медленнее, затем выше прежнего. Правильная стратегия - vimtutor, переход на Vim в реальной работе и по 1-2 новые команды в неделю.
- Курс ведёт от грамматики Vim к современному Neovim; ядро навыка работает в любом Vim, а инновации показаны на Neovim.