← Все статьи
TOOLS

Vi/Vim для начинающих: режимы, навигация и базовое редактирование

Практическое введение в vi и Vim: режимы работы, навигация, вставка, удаление, копирование, поиск, сохранение и безопасный выход.

Содержание статьи
  1. Зачем знать vi
  2. Как открыть файл
  3. Три режима редактора
  4. Normal mode
  5. Insert mode
  6. Command-line mode
  7. Ввод и исправление текста
  8. Навигация по тексту
  9. Копирование и вставка
  10. Поиск
  11. Сохранение и выход
  12. Что делать, если редактор «не слушается»
  13. Минимальная тренировка
  14. Полезная шпаргалка
  15. Что изучать дальше

Зачем знать vi

vi — консольный текстовый редактор, который встречается почти в любой Unix-подобной системе. На сервере по SSH может не оказаться графического интерфейса, а привычные редакторы не всегда установлены. При этом vi часто доступен даже в минимальной Linux-системе.

В Linux командой vi нередко запускается Vim — расширенная реализация редактора vi. Для базовой работы это почти не меняет подход: главное понять режимы и несколько команд.

Цель этой статьи — не выучить все возможности Vim, а научиться спокойно открыть файл, внести изменения, найти нужный фрагмент и корректно выйти.

Как открыть файл

Создайте учебный файл и откройте его:

printf 'server_name example.local;\nlisten 8080;\n' > ~/vi-lab.conf
vi ~/vi-lab.conf

Если файла ещё нет, vi создаст его при сохранении. Внизу окна обычно отображаются подсказки о состоянии редактора, а сам текст занимает основную часть терминала.

Перед работой с системной конфигурацией сделайте резервную копию:

sudo cp /etc/example.conf /etc/example.conf.bak
sudo vi /etc/example.conf

На реальном сервере сначала убедитесь, что путь указан правильно. Ошибка в имени файла может привести к созданию нового файла вместо редактирования нужного.

Три режима редактора

Главная особенность vi — разные режимы ввода команд и текста.

Normal mode

В обычном режиме нажатия клавиш — это команды: перемещение, удаление, копирование, поиск. При открытии файла редактор обычно находится именно в этом режиме.

Insert mode

В режиме вставки клавиши печатают текст. Перейти в него можно клавишей i, а вернуться в обычный режим — Esc.

Command-line mode

Команды сохранения, выхода и замены вводятся после : в обычном режиме. Например, :w сохраняет файл, а :q выходит из редактора.

Если непонятно, в каком режиме вы находитесь, нажмите Esc один или два раза. Это безопасный способ вернуться в обычный режим.

Ввод и исправление текста

Основные команды перехода в режим вставки:

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

Попробуйте:

  1. нажмите i;
  2. введите текст;
  3. нажмите Esc;
  4. переместите курсор;
  5. нажмите A и добавьте продолжение строки;
  6. снова нажмите Esc.

В обычном режиме:

  • x удаляет символ под курсором;
  • X удаляет символ перед курсором;
  • dd удаляет всю текущую строку;
  • D удаляет текст от курсора до конца строки;
  • u отменяет последнее изменение;
  • Ctrl-r возвращает отменённое изменение.

Команда dd может показаться непривычной: первая d означает начало операции удаления, вторая повторяет её для всей строки. Многие команды vi строятся по такому принципу.

Навигация по тексту

Для начала достаточно этих клавиш:

  • h — влево;
  • j — вниз;
  • k — вверх;
  • l — вправо;
  • 0 — начало строки;
  • $ — конец строки;
  • gg — начало файла;
  • G — конец файла;
  • Ctrl-f — прокрутка на экран вперёд;
  • Ctrl-b — прокрутка на экран назад.

Стрелки обычно тоже работают, но клавиши h, j, k, l позволяют перемещаться, не покидая основной буквенный ряд. Это особенно удобно после привыкания к редактору.

Перед командой можно указать число. Например:

5j

переместит курсор на пять строк вниз, а:

3dd

удалит три строки, начиная с текущей.

Копирование и вставка

В терминологии Vim копирование называется yank:

  • yy — скопировать текущую строку;
  • yw — скопировать слово от курсора;
  • p — вставить после курсора;
  • P — вставить перед курсором.

Пример для дублирования строки:

  1. поставьте курсор на нужную строку;
  2. нажмите yy;
  3. нажмите p.

Удалённый текст также можно вставить: после dd нажмите p. Поэтому удаление в Vim часто похоже на вырезание.

Поиск

Для поиска по файлу в обычном режиме используйте /:

/listen

Нажмите Enter, и курсор перейдёт к найденному совпадению. Следующее совпадение ищется клавишей n, предыдущее — N.

Поиск в обратном направлении запускается через ?:

?server_name

Чтобы убрать подсветку найденных совпадений, выполните команду:

:nohlsearch

или сокращённо:

:noh

Поиск учитывает настройки редактора. В базовой работе достаточно помнить /текст, Enter, n и N.

Сохранение и выход

Сначала нажмите Esc, затем введите одну из команд:

  • :w — сохранить файл;
  • :q — выйти;
  • :wq — сохранить и выйти;
  • :x — сохранить и выйти, если были изменения;
  • :q! — выйти без сохранения.

После ввода команды нажмите Enter. Символ ! означает принудительное действие. Например, :q! отменит все несохранённые изменения в текущей сессии.

Частая последовательность для выхода после редактирования:

Esc
:wq
Enter

Если редактор сообщает, что есть несохранённые изменения, не используйте :q! автоматически. Сначала решите, нужно ли сохранить файл через :w или :wq.

Что делать, если редактор «не слушается»

Самая частая причина — вы находитесь в режиме вставки и ожидаете команды. Нажмите Esc, затем повторите действие.

Если внизу появилась строка, начинающаяся с :, / или ?, редактор ждёт завершения команды. Нажмите Enter, чтобы выполнить её, или Esc, чтобы отменить ввод.

Если случайно нажали Ctrl-z, процесс редактора мог быть приостановлен и вы вернулись в оболочку. Вернуть его на передний план можно командой:

fg

Не закрывайте терминал, пока не убедились, что файл сохранён. Если соединение с сервером оборвалось во время редактирования, Vim может оставить временный swap-файл. При следующем открытии внимательно прочитайте предупреждение и не выбирайте восстановление вслепую.

Минимальная тренировка

Откройте учебный файл:

vi ~/vi-lab.conf

Затем выполните упражнение:

  1. перейдите в конец файла командой G;
  2. создайте новую строку через o;
  3. введите root_path /srv/example;;
  4. нажмите Esc;
  5. найдите listen через /listen;
  6. перейдите к следующему совпадению клавишей n;
  7. скопируйте строку yy и вставьте её ниже через p;
  8. отмените вставку командой u;
  9. сохраните и выйдите через :wq.

После выхода проверьте результат:

cat ~/vi-lab.conf

Повторите упражнение несколько раз. Для первых шагов важнее уверенно переключаться между режимами и выходить без потери изменений, чем запоминать десятки команд.

Полезная шпаргалка

Действие Команда
Ввод перед курсором i
Ввод после курсора a
Новая строка ниже o
Выйти из режима вставки Esc
Удалить символ x
Удалить строку dd
Отменить изменение u
Скопировать строку yy
Вставить после курсора p
Поиск вперёд /текст
Следующее совпадение n
Сохранить :w
Выйти :q
Сохранить и выйти :wq
Выйти без сохранения :q!

Что изучать дальше

После освоения базовых команд стоит перейти к операторам и движениям: ciw, dw, c$, визуальному режиму, поиску и замене. Они позволяют редактировать текст быстрее и точнее, чем последовательность отдельных удалений и переходов.

В следующей статье разберём уверенную работу с vi: слова и движения, комбинации операторов, визуальное выделение, массовую замену и регистры.

Материал подготовил Злой админ