Vim — базовые команды и режимы в Linux
Vim — мощный консольный редактор для Unix-подобных систем. Освойте режимы (Normal, Insert, Visual, Command), базовые движения и операторы (d, c, y, p), а также регулярные выражения для поиска. Эта статья даёт практическое руководство, шпаргалку команд, план обучения и чек-листы для разработчиков и администраторов.

Vim — один из самых универсальных и быстрых текстовых редакторов для Unix-подобных систем. Он является продолжением классического vi, разработанного Биллом Джойем. На большинстве дистрибутивов Linux и BSD Vim устанавливается по умолчанию, поэтому вы можете использовать один и тот же инструмент локально и на удалённых серверах.
Ключевая идея Vim — работать эффективно: редактор ориентирован на редактирование (перемещение, изменение, повторение), а не на набор текста, как это делает графический редактор. Для этого у Vim есть несколько режимов, каждый со своей семантикой и набором клавиш.
Как работает Vim
Vim отличается от традиционных редакторов. Он реализует философию Unix: делать одну вещь хорошо. Важное понятие: вы как программист тратите большую часть времени на правку и навигацию по коду, а не на его ввод. Поэтому Vim разделяет действия на режимы — наборы команд, которые экономят движения рук и повышают выразительность.
Основные режимы Vim:
- Normal — режим построения команд и навигации (основной рабочий режим).
- Insert — режим ввода текста.
- Visual — режим выделения текста (включая блочное выделение).
- Command — режим ввода двоеточковых команд (:w, :q и т.д.).
Важно: нажимая
Вставка текста: Insert Mode
По умолчанию Vim запускается в Normal-режиме. Чтобы перейти в Insert-режим, нажмите клавишу i — вставка начинается в текущей позиции курсора. Внизу экрана появится индикатор режима.
Когда вы вносите изменения в Insert-режиме, текст копируется в буфер редактирования. Для сохранения и выхода вернитесь в Normal-режим (нажмите
:wАльтернативные способы входа в Insert-режим:
- o — вставить новую строку ниже текущей и войти в Insert.
- O — вставить новую строку выше текущей.
- I — вставить в начало текущей строки.
- a — добавить символы сразу после курсора.
- A — добавить текст в конец строки.
Для сохранения и выхода в одну команду можно использовать:
:wqИли если нужно выйти без сохранения:
:q!Навигация и правка: Normal Mode
В Normal-режиме вы перемещаетесь по файлу и выполняете быстрые операции. Вместо стрелок Vim использует hjkl: h — влево, j — вниз, k — вверх, l — вправо. Такой подход минимизирует перемещение рук с основной позиции над клавишами.
Навигация по словам и строкам:
- w — переход к началу следующего слова.
- b — переход к началу предыдущего слова.
- e — переход к концу слова.
- 0 (ноль) — начало строки.
- $ — конец строки.
- H — верх экрана.
- M — середина экрана.
- L — низ экрана.
- gg — начало файла.
- G — конец файла.
- Ctrl+u — прокрутить вверх на половину экрана.
- Ctrl+d — прокрутить вниз на половину экрана.
Операторы редактирования комбинируются с движениями (motions). Общая форма:
{оператор}{движение}Примеры:
- d{motion} — удалить по движению. Например, dw — удалить слово; d$ — до конца строки; dd — удалить строку.
- c{motion} — изменить по движению и перейти в Insert-режим (cw — изменить слово).
- y{motion} — «йэнк» (копировать) по движению; yy — скопировать строку.
- p — вставить после курсора, P — вставить перед курсором.
d{motion}Вы также можете повторить последнюю команду нажатием точки: .
Отмена и возврат:
- u — отмена последнего действия.
- Ctrl+r — вернуть отменённое.
Поиск:
/{regex}Где {regex} — регулярное выражение. n — перейти к следующему совпадению, N — к предыдущему.
Выделение: Visual Mode
Visual-режим позволяет выделять блоки текста с помощью тех же движений. Войдите в него клавишей v из Normal-режима.
- v — визуальный по символам.
- V — визуальный по строкам.
- Ctrl+v — визуальный блочный режим (column/block selection).
Выделив участок, можно применить операторы: y — скопировать выделение, d — удалить, >/< — сдвинуть вправо/влево, = — автоформатирование при поддержке плагинов.
Visual-блоки особенно полезны при правке столбцов данных, выравнивании кодов и массовых правках.
Командный режим: ввод двоеточковых команд
Нажмите : в Normal-режиме, чтобы попасть в Command-строку. Ниже перечислены самые полезные команды:
- :w — сохранить файл.
- :wq — сохранить и выйти.
- :saveas FILE — сохранить как FILE.
- :q — выйти (если нет несохранённых изменений).
- :q! — выйти без сохранения.
- :e FILE — открыть FILE для редактирования.
- :help — открыть встроенную справку.
Эти команды удобно комбинировать: например, :%s/old/new/g выполнит замену по всему файлу.
Быстрые советы и трюки
- Используйте регистры, чтобы копировать/вставлять в конкретный буфер: “ayw — скопировать слово в регистр a, “ap — вставить из регистра a.
- Макросы: q<регистровая клавиша> записывает макрос, q останавливает запись, @<регистровая клавиша> воспроизводит.
- Автодополнение: Ctrl+n / Ctrl+p в Insert-режиме для подсказок на основе буфера.
- Настройка: ~/.vimrc содержит ваши настройки; используйте плагины через менеджеры (vim-plug, Vundle, dein).
Цель не запомнить всё сразу, а понять паттерны: движения + оператор + точка повтора.
Шпаргалка: основные команды
| Действие | Команда |
|---|---|
| Войти в Insert в текущей позиции | i |
| Вставить строку ниже | o |
| Вставить строку выше | O |
| Сохранить | :w |
| Сохранить и выйти | :wq |
| Выйти без сохранения | :q! |
| Удалить символ | x |
| Удалить слово | dw |
| Удалить до конца строки | d$ |
| Удалить строку | dd |
| Изменить слово | cw |
| Изменить строку | cc |
| Копировать слово | yw |
| Копировать строку | yy |
| Вставить | p |
| Отменить | u |
| Повторить | . |
| Поиск | /pattern |
| Следующее совпадение | n |
| Предыдущее совпадение | N |
Пошаговая методика изучения (мини-методология)
- День 1–3: Овладейте переходами (hjkl, w, b, e, 0, $), возврат в Normal и базовые сохранения (:w, :q).
- День 4–7: Учитесь комбинировать операторы с движениями: d, c, y + motion. Повторяйте команду точкой.
- Неделя 2: Visual-режим, блочное выделение, макросы q и @, простые замены :s.
- Непрерывно: настраивайте ~/.vimrc, затем по одной настройке или плагину в неделю.
Практика: выделяйте 15–30 минут в день на выполнение мини-задач (редактирование конфигов, исправление кода) без мыши.
Чек-листы по ролям
Разработчик:
- Освоить перемещения по словам и строкам (w, b, e, gg, G).
- Понимать d/c/y и их комбинации.
- Уметь искать и заменять по регулярным выражениям.
- Использовать макросы для повторяющихся рефакторингов.
Системный администратор:
- Уметь открывать и сохранять файлы на сервере (:e, :w).
- Быстро редактировать конфиги (Vim в терминале, без мыши).
- Использовать Visual Block для изменения столбцов IP/портов.
- Знать способы безопасного выхода (:wq, :q!).
Новичок/стажёр:
- Знать как войти и выйти из режима (i,
, :wq, :q!). - Понимать базовые движения и удаление одной строки (dd).
- Использовать поиск / и повтор n/N.
Когда Vim не подходит (контрпримеры)
- Быстрая одноразовая правка в GUI-ориентированной среде — иногда проще использовать текстовый редактор с мышью.
- Большие бинарные файлы и специфические форматы (данные, не подходящие под текстовый редактор).
- Пользователи, которые не готовы инвестировать время в обучение: без практики Vim даёт меньше преимуществ.
План действий при ошибках и откате
Если вы внесли нежелательные изменения:
- Отмена: нажмите u, чтобы отменить последнюю операцию.
- Откат нескольких шагов: повторите u несколько раз.
- Если всё испорчено и нужно выйти без сохранения: :q!
Важно: регулярно сохраняйте файл в отдельный бэкап: :w filename.bak
Критерии приёмки
Чтобы считать, что вы освоили базовый Vim, вы должны уметь:
- Перемещаться по коду без стрелок и мыши.
- Комбинировать операторы и движения (удалять, менять, копировать произвольные фрагменты).
- Использовать визуальные режимы для массовых правок.
- Применять макросы и работать с регистрами для копирования/вставки.
Короткий глоссарий
- Normal — основной режим для команд и навигации.
- Insert — режим ввода текста.
- Visual — режим выделения: символный, строковый, блочный.
- Motion — движение курсора (w, b, e, gg и т.д.).
- Operator — действие, применяемое к motion (d, c, y).
Ментальные модели и эвристики
- Думайте в терминах “оператор + движение”: d + w (удалить слово), c + $ (изменить до конца строки).
- Всегда возвращайтесь в Normal-режим для планирования следующего шага.
- Повторяйте первые команды точкой (.) для обучения мышечной памяти.
Маленькая шпаргалка для ~/.vimrc
Примеры полезных настроек (помещайте в ~/.vimrc):
set number " показать номера строк
set relativenumber " относительные номера
syntax on " подсветка синтаксиса
set tabstop=4 " ширина табуляции
set shiftwidth=4 " отступы при автоформатировании
set expandtab " табы заменять пробеламиДиаграмма принятия решения: какой режим выбрать
flowchart TD
A[Я хочу изменить/переместить] -->|Просто ввести текст| B[Insert: i/o/A/I]
A -->|Выделить блок| C[Visual: v/V/Ctrl+v]
A -->|Выполнить команду/замену| D[Command: :s, :w, :q]
A -->|Удалить/заменить по движению| E[Normal: d/c + motion]
B --> F[Возврат в Normal: ]
C --> F
D --> F
E --> F Публичные советы по продуктивности
- Начинайте с коротких сессий без мыши: 15–30 минут в день.
- Настройте удобную клавиатуру и переназначения, если нужно.
- Используйте интеграцию с tmux для работы с несколькими файлами и сессиями.
Важно: Vim — это инструмент, который даёт преимущество за счёт практики. Не пытайтесь выучить всё сразу.
Часто задаваемые вопросы
Нужно ли изучать Vim, если я пользуюсь VS Code?
Да, если вы работаете с удалёнными серверами, конфигурациями или хотите повысить скорость редактирования — базовые навыки Vim полезны даже в GUI-редакторах.
Как безопасно практиковаться на продуктивных файлах?
Копируйте файл в тренировочный вариант (cp /etc/config /tmp/config.test) и практикуйтесь на копии. Для важных изменений используйте систему контроля версий.
Что делать, если я застрял в Vim и не знаю, как выйти?
Нажмите
Заключение
Vim даёт контроль и скорость за счёт концепции режимов и сочетаний оператор+движение. Начните с базовых движений и операций, практикуйте макросы и визуальные блоки. Постепенно настраивайте ~/.vimrc под свои задачи. Даже базовые навыки заметно ускоряют правку кода и конфигураций.
Похожие материалы
Как сохранить пароли в Google Chrome
Заполнение последовательных данных в Excel
Доступ к геоблокированному контенту: VPN и альтернативы
JUnit 5 @Nested: вложенные тесты
Открыть приложение, если macOS пишет «повреждено»