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

Режимы vi

Редактор viработает в двух основных режимах:

  • Командный режим: используется для навигации и выполнения команд.
  • Режим вставки: используется для вставки и редактирования текста.

При запуске vi находится в командном режиме. Чтобы войти в режим вставки, нажмите i. Чтобы вернуться в командный режим из режима вставки, нажмите Esc.


Сохранение изменений и выход vi

  1. Нажмите Esc, чтобы переключиться в командный режим.
  2. Введите :wq и нажмите Enter.

Эта команда сохраняет текущие изменения и выходит из редактора.


Выход из vi без сохранения изменений

  1. Нажмите Esc, чтобы убедиться, что вы находитесь в командном режиме.
  2. Введите :q! и нажмите Enter.

Эта команда завершает работу vi без сохранения изменений, внесенных во время сеанса.


Альтернативная команда для сохранения и выхода

  1. Убедитесь, что вы находитесь в командном режиме, нажав Esc.
  2. Введите :x и нажмите Enter.

Команда :x сохраняет изменения только в том случае, если они были сделаны, а затем завершает работу vi.


Выход из vi с помощью сочетания клавиш

  1. Нажмите Esc, чтобы войти в командный режим.
  2. Нажмите Shift+ Z дважды (ZZ).

Нажатие ZZсохраняет все изменения и немедленно выходит из редактора.


Выход, если ключ Esc не работает

Если клавиша Esc не реагирует, попробуйте следующие варианты переключения в командный режим:

  • Нажмите Ctrl+ [.
  • Нажмите Ctrl+ C.

Находясь в командном режиме, используйте соответствующую команду для выхода vi.


Устранение распространенных проблем

Если при попытке бросить курить вы получили предупреждение, например:

E37: No write since last change (add! to override)

Это означает, что есть несохраненные изменения. Чтобы выйти без сохранения, используйте :q!. Чтобы сохранить изменения и выйти, используйте :wq или ZZ.


Понимание того, как правильно выйти из vi, обеспечивает плавную навигацию и предотвращает потерю результатов вашей работы.

Written by Иван Васильков

Системный администратор и DevOps с опытом 10+ лет.