В главе 01 мы разобрались, почему модальное редактирование актуально в 2026 году. Теперь пора превратить теорию в мышечную память. Эта глава - ваш базовый набор выживальщика: как поставить Vim и Neovim на любую систему, как запустить встроенный тренажёр vimtutor, как устроены четыре режима редактора и, главное, как из него выйти. Тот самый мем "как выйти из Vim" - не шутка ради шутки, а прямое следствие непонимания режимов. К концу главы он перестанет быть для вас загадкой.Часть I. Основы
Цель главы скромная, но критичная: после неё вы сможете открыть файл, что-то в нём напечатать, сохранить и закрыть редактор, не запаниковав и не убив процесс через kill -9. Всё "продуктивное" (перемещения, грамматика команд, конфигурация) идёт дальше - здесь мы строим фундамент, без которого остальное рассыплется.
Зачем вообще что-то ставить
Если вы на Linux или macOS, какой-то Vim у вас почти наверняка уже есть - он предустановлен в большинстве дистрибутивов и в составе macOS. Но "какой-то" - ключевое слово. Системный Vim часто собран в урезанной конфигурации (vim.tiny без +clipboard, без +python3), а Neovim вообще не поставляется по умолчанию почти нигде. Для курса нам нужны:
- Vim 9.1 - текущая стабильная ветка с Vim9script, классами и встроенным EditorConfig.
- Neovim 0.11+ или 0.12 - современная ветка с нативным LSP, встроенным treesitter и менеджером плагинов vim.pack (последний - новый/экспериментальный в ветке 0.12; подробнее о новшествах - в главе 24).
УстановкаVim или Neovim? Если коротко: для обучения базовым навыкам разницы почти нет - режимы, движения и грамматика идентичны. Расходятся они в конфигурации и экосистеме плагинов. Практичная стратегия 2026: Neovim как основной редактор там, где вы контролируете окружение, и сохранять беглость в Vim для серверов, где нельзя ставить софт (Vim легче по памяти и почти везде предустановлен). Развёрнутое сравнение - в главе 24.
Linux
Код: Выделить всё
Дистрибутив | Vim | Neovim
-----------------+------------------------+-------------------------
Debian / Ubuntu | sudo apt install vim | sudo apt install neovim
Fedora / RHEL | sudo dnf install vim | sudo dnf install neovim
Arch / Manjaro | sudo pacman -S vim | sudo pacman -S neovim
Версии Neovim в стабильных репозиториях часто отстают. Если nvim --version показывает что-то старше 0.11, берите свежий бинарь:
- Универсальный способ - официальный AppImage с GitHub Releases проекта neovim/neovim (скачать, chmod +x, запускать напрямую).
- Arch почти всегда даёт актуальную версию через pacman.
- Ubuntu - PPA ppa:neovim-ppa/unstable или Homebrew для Linux.
Через Homebrew - стандарт де-факто на macOS:
Код: Выделить всё
brew install vim
brew install neovim
Windows
На Windows два популярных пакетных менеджера:
Код: Выделить всё
winget install Neovim.Neovim
winget install vim.vim
Код: Выделить всё
scoop install neovim
scoop install vim
Первый шаг - обязательный: vimtutorПроверка установки. После любого способа выполните vim --version и nvim --version. Первая строка покажет версию, дальше - список фич. Если команда не найдена, перезапустите терминал (обновился PATH) и проверьте, что бинарь действительно в нём.
Прежде чем читать дальше, остановитесь и пройдите vimtutor. Это не формальность из вежливости. vimtutor - встроенный интерактивный учебник на ~30 минут, который идёт в комплекте с каждой установкой Vim. Он открывает редактор на копии текста, которую можно безопасно править, и проводит через базовые движения и операторы руками, а не глазами.
Код: Выделить всё
vimtutor
Код: Выделить всё
:Tutor
Почему это обязательно? Vim - навык моторный, а не теоретический. Прочитать про команду dw и нажать dw пятнадцать раз на реальном тексте - разные вещи для вашего мозга. Канонический план обучения 2026 года начинается ровно с этого: vimtutor до автоматизма базовых движений -> переход на Vim в реальной работе -> точечные тренажёры (vim-be-good, VimGolf). Подробный план обучения - в главе 33.
Не пытайтесь "сэкономить" и пропустить тренажёр в пользу чтения. Эта глава даёт карту, а vimtutor - первую поездку по местности.
Четыре режима: ядро модального редактирования
Главное ментальное препятствие для новичка - то, что в Vim одни и те же клавиши делают разное в зависимости от текущего режима. Нажатие i в одном режиме начинает вставку текста, а в другом печатает букву "i". Пока вы не держите в голове, в каком режиме находитесь, поведение редактора кажется хаотичным. Отсюда и весь мем про "как выйти".
Запомните железное правило: в Vim есть несколько режимов, и почти все проблемы новичка - это "я думал, что я в другом режиме". Разберём четыре основных.
Normal (нормальный, он же командный режим)
Это режим по умолчанию, в котором Vim стартует и в который вы возвращаетесь после каждого действия. Вопреки интуиции пользователя Word, здесь клавиатура - не пишущая машинка, а пульт управления. Буквы - это команды: d удаляет, y копирует, w прыгает на слово вперёд, x стирает символ под курсором.
Ключевая идея философии Vim (см. главу 01): большую часть времени программист читает и правит код, а не печатает сплошной текст. Поэтому "дом" редактора - режим, заточенный под навигацию и манипуляцию, а ввод текста - отдельное состояние, в которое вы входите осознанно.
Insert (режим вставки)
Тот самый "привычный" режим, где клавиатура работает как печатная машинка: что нажали - то и появилось в тексте. Сюда входят, чтобы набрать текст, и сразу выходят обратно в Normal, как только закончили.
Войти можно множеством способов (детально - в главе 04), но для выживания хватит двух:
Код: Выделить всё
Клавиша | Куда встанет курсор
---------+---------------------------------
i | перед текущим символом (insert)
a | после текущего символа (append)
Visual (визуальный режим)
Режим выделения текста. Вы отмечаете кусок (символами, строками или прямоугольным блоком), а затем применяете к выделению оператор - удалить, скопировать, поменять регистр. Три подвида:
Код: Выделить всё
Клавиша | Что выделяет | Индикатор
---------+----------------------+--------------------
v | посимвольно | -- VISUAL --
V | целыми строками | -- VISUAL LINE --
Ctrl-v | прямоугольный блок | -- VISUAL BLOCK --
Command-line (режим командной строки, Ex-команды)
Режим, который вызывается двоеточием : из Normal. Курсор прыгает в самый низ экрана, и вы вводите команду целиком, завершая её нажатием Enter. Именно здесь живут :w (записать), :q (выйти), :s (замена), :help и сотни других. Префикс : исторически называется Ex-командами (по имени строчного редактора ex, предка Vim).
Сюда же относятся "братья" командной строки: / запускает поиск вперёд, ? - назад (детально - в главе 10).
Бонус: Replace (режим замены) - куда новичок попадает случайно
Четыре режима выше - ядро модального редактирования, но есть ещё один, в который легко влететь по ошибке, поэтому о нём стоит знать заранее. Если в Normal нажать заглавную R (это Shift+r), Vim входит в Replace-режим: внизу загорается -- REPLACE --, и теперь каждый набранный символ не вставляется, а перезаписывает тот, что под курсором. Новичок, метивший в обычную вставку, видит, как текст затирается на месте, и пугается.
Лекарство ровно то же, что и везде: Esc возвращает в Normal. Никаких особых действий не нужно - Replace это просто ещё один режим, из которого Esc выводит "домой". (Одиночная замена одного символа - строчная r - это команда Normal-режима, а не отдельный режим; её разбираем в главе 04.)
Переходы между режимами
Код: Выделить всё
i / a / o ...
┌──────────────────────────────►┐
│ │
┌────┴────┐ ┌────▼────┐
│ NORMAL │◄─────── Esc ─────────│ INSERT │
│ (дом) │ └─────────┘
└─┬───┬───┘
│ │
v/V │ │ : (или / ?)
│ │
┌───▼─┐ └─►┌──────────────┐
│VISUAL│ │ COMMAND-LINE │
└──┬───┘ └──────┬───────┘
│ Esc │ Enter / Esc
└──────────────┴──────► NORMAL
Базовое выживание: минимальный набор команд
Теперь - концентрат, ради которого многие и открывают эту главу. Сценарий "вошёл, поправил, сохранил, вышел" целиком.
Открыть файл
Из терминала:
Код: Выделить всё
nvim notes.txt # или: vim notes.txt
Войти в режим вставки и напечатать текст
Vim стартует в Normal. Чтобы начать печатать, нажмите i:
Код: Выделить всё
было: [курсор в Normal-режиме на пустом буфере]
нажимаем: i, затем печатаем "Привет, Vim"
стало: Привет, Vim (внизу горит -- INSERT --)
Закончили печатать - Esc. Индикатор -- INSERT -- гаснет. Вы снова "дома" и можете давать команды.
Сохранить и выйти
Все команды сохранения/выхода - это Ex-команды, то есть вводятся через : из Normal-режима и завершаются Enter.
Код: Выделить всё
Команда | Что делает | Мнемоника
---------+---------------------------------------------------------+------------------
:w | записать (сохранить) файл, не выходя | write
:q | выйти (если нет несохранённых изменений) | quit
:wq | сохранить и выйти | write + quit
:x | то же, что :wq, но пишет только при наличии изменений | -
:q! | выйти без сохранения, отбросив изменения | quit + force (!)
:wa | записать все изменённые буферы, не выходя | write all
:wqa | сохранить и закрыть все окна/файлы | write quit all
:qa! | выйти из всех окон без сохранения, отбросив изменения | quit all + force
ZZ | сохранить и выйти (без :, прямо из Normal) | -
ZQ | выйти без сохранения (аналог :q!) | -
Восклицательный знак ! в :q! - это "принудительно, я знаю, что делаю". Он говорит редактору отбросить ваше предупреждение о несохранённых правках. Используйте осознанно: :q! безвозвратно теряет всё, что вы напечатали с последнего :w.
Команды с суффиксом a (от all) пригодятся, когда у вас открыто несколько буферов или сплитов: :wa запишет сразу все изменённые файлы, :wqa - сохранит и закроет всё разом, а :qa! - частый способ выбраться, когда "зависли" с кучей окон, не сохраняя ничего. Без a команда :q закрывает только текущее окно, и из нескольких сплитов выйти одним нажатием не получится.
Код: Выделить всё
было: напечатали текст, в Normal-режиме
нажимаем: : w q Enter
стало: файл сохранён, Vim закрылся, вы в терминале
Ошиблись - не паникуйте, ничего набивать заново не нужно:
Код: Выделить всё
Клавиша | Действие
---------+------------------------------------------
u | отменить последнее изменение (undo)
Ctrl-r | вернуть отменённое (redo)
U | отменить все изменения на текущей строке
Код: Выделить всё
было: случайно удалили строку нажатием dd
нажимаем: u
стало: строка вернулась
Запрос "how to exit vim" - один из самых частых на Stack Overflow, и за ним стоит реальная когнитивная ловушка, а не глупость пользователей. Разложим её по косточкам, потому что понимание причины важнее заучивания выхода.
Человек открывает Vim впервые (часто случайно - git по умолчанию зовёт его для commit-сообщений). Он видит текст и, как в любом редакторе, начинает печатать. Но он в Normal-режиме! Его буквы воспринимаются как команды. Он жмёт что попало, режим может незаметно переключиться, на экране появляется мусор, привычные Ctrl-S / Ctrl-Q / Ctrl-W не работают (а Ctrl-W в Insert вообще удаляет слово). Выхода не видно - отсюда паника и мемы.
Причина ровно одна: непонимание режимов. Зная их, выход тривиален. Универсальный безопасный рецепт:
Код: Выделить всё
1. Esc # гарантированно попасть в Normal (можно дважды)
2. :q! Enter # выйти, отбросив любые случайные правки
Лучшие практики 2026Почему нельзя просто Ctrl-C или закрыть окно? Ctrl-C в Vim прерывает текущую команду, но не закрывает редактор. Закрытие вкладки терминала оставит за собой файл подкачки (.swp), и при следующем открытии файла Vim предупредит о "recovery". Чистый выход - всегда через :q / :wq / :q!.
- Пройдите vimtutor / :Tutor целиком, прежде чем настраивать что-либо. Соблазн сразу поставить модный дистрибутив велик, но базовая моторика движений важнее. Сначала навык, потом конфиг - это сэкономит недели.
- Ставьте свежий Neovim, а не репозиторный. В стабильных репозиториях Linux версии Neovim часто отстают от 0.11/0.12, а именно в них живут нативный LSP и встроенный treesitter. AppImage или официальный PPA/Homebrew надёжнее.
- Не настраивайте init.lua в этой главе. Для выживания конфигурация не нужна. Голый Neovim в 2026 уже даёт встроенную подсветку treesitter и базовый LSP "из коробки". Разумные дефолты и init.lua с нуля - целая глава 20.
- Привыкайте к Esc как к рефлексу. Любое сомнение -> Esc -> вы в Normal. Опытные пользователи позже заменяют его на Ctrl-[ или комбо вроде jk (об этом и его подводных камнях - в главе 32), но рефлекс "домой" формируется именно сейчас.
- На серверах рассчитывайте на голый Vim. Там, где нельзя поставить Neovim, вас спасёт умение выживать в предустановленном Vim. Базовый набор (i, Esc, :wq, :q!, u) одинаков в обоих редакторах - учите его как универсальный.
- Заведите тренировочный файл-черновик. Откройте scratch.txt и отрабатывайте вход/выход из режимов на нём, а не на боевом коде. Безопасный полигон ускоряет формирование привычки.
- Печатать в Normal-режиме. Самая первая и частая. Буквы выполняются как команды. Лекарство: смотрите на индикатор внизу - если нет -- INSERT --, вы не печатаете, а командуете. Нажмите i.
- Искать выход через Ctrl-S / Ctrl-Q / закрытие окна. Эти привычки из GUI-редакторов в Vim не работают (а Ctrl-S к тому же может "заморозить" терминал через программный flow control - разморозить можно Ctrl-Q). Выход - только через Ex-команды :q / :wq / :q!.
- :q при несохранённых изменениях и непонимание ошибки E37. Vim откажется выходить и напишет E37: No write since last change. Это не баг - это защита. Решение: :wq (сохранить) или :q! (отбросить).
- Путать :w и :q. :w - записать, :q - выйти. :wq - оба сразу. Мнемоника write / quit спасает.
- Бояться u. Новички после ошибки начинают лихорадочно исправлять руками, хотя u мгновенно откатывает последнее действие. Отмена в Vim надёжна - пользуйтесь ею смело.
- Случайно нажать Ctrl-v и не понять блочный режим. Появляется -- VISUAL BLOCK --, поведение курсора меняется. Лекарство универсально: Esc.
- Игнорировать предупреждение о swap-файле. Если Vim при открытии пишет про .swp и "recovery", значит предыдущий сеанс закрылся некорректно. Внимательно прочитайте варианты: обычно (R)ecover или (D)elete swap-файла; не закрывайте окно "крестиком", а выходите по-человечески.
- Установка и проверка сборки. Поставьте Neovim 0.11+ или 0.12 любым подходящим для вашей ОС способом из этой главы. Выполните nvim --version и убедитесь, что версия не ниже 0.11. Затем vim --version и проверьте, есть ли в выводе +clipboard.
- vimtutor целиком. Пройдите vimtutor (или :Tutor в Neovim) от начала до конца, не пропуская разделов. Засеките время - это ваша точка отсчёта. Вернитесь к нему через неделю и сравните ощущения.
- Цикл выживания вслепую. Создайте файл scratch.txt, войдите в Insert (i), напечатайте три строки, вернитесь в Normal (Esc), сохраните и выйдите (:wq). Откройте снова, отмените воображаемую правку через u, выйдите без сохранения (:q!). Повторите 5 раз, пока последовательность не станет автоматической.
- Аварийный выход. Откройте файл, специально "насорите": понажимайте случайные клавиши в Normal-режиме, войдите в Visual (v), в блочный режим (Ctrl-v), в Insert. Из каждого состояния вернитесь в Normal одним Esc и в итоге выйдите через Esc -> :q!. Цель - отработать рефлекс возврата из любого режима.
- Сравнение :q и :q!. Откройте файл, напечатайте что-нибудь и попробуйте :q. Прочитайте сообщение E37. Теперь выйдите через :q!. Откройте файл заново и убедитесь, что изменения не сохранились. Затем повторите, но завершите через :wq - теперь изменения на месте.
- ZZ против :wq. Отредактируйте файл и сохраните-выйдите через ZZ (в Normal-режиме, без двоеточия). Убедитесь, что результат идентичен :wq. Прочувствуйте, что ZZ быстрее для частого сценария "сохранил и закрыл".
- Ставьте полноценные редакторы: Vim 9.1 и Neovim 0.11+/0.12. На Linux - apt/dnf/pacman (Neovim лучше свежим бинарём/AppImage), на macOS - brew, на Windows - winget/scoop. Проверка: nvim --version, vim --version.
- vimtutor (или :Tutor) - обязательный первый шаг. Навык моторный; ~30 минут практики важнее любого чтения.
- Четыре режима: Normal (дом, команды), Insert (печать текста, вход через i/a), Visual (выделение, v/V/Ctrl-v), Command-line (Ex-команды через
. Плюс Replace (R, -- REPLACE --), в который легко попасть случайно, - из него тоже выводит Esc. Смотрите на индикатор внизу экрана. - Esc (или Ctrl-[) всегда возвращает в Normal - ваш аварийный тормоз из любого режима.
- Минимум выживания: i - войти в Insert, Esc - выйти; :w - сохранить, :q - выйти, :wq - оба, :q! - выйти без сохранения, ZZ - сохранить и выйти; u - отменить, Ctrl-r - вернуть.
- Мем "как выйти из Vim" - следствие непонимания режимов. Универсальный рецепт: Esc, затем :q! (или :wq, если правки нужны).