Страницы

Поиск по вопросам

среда, 3 октября 2018 г.

Как выйти из редактора Vi или Vim?

Работал в командной строке. Попал в странный текстовый редактор, в котором не работает мышка. Вижу сообщение
"type :quit to quit VIM"
Но команда пишется прямо в текстовый файл и не выполняется.
Что делать, как выйти?


Ответ

Добро пожаловать в Vim!
Прежде чем ввести команду, нажмите Esc. Чтобы потом подтвердить команду, нажмите Enter
Клавиша Esc переключает Vim в нормальный режим. Если в этом режиме нажать (проверьте, что установлена английская раскладка и снят CapsLock, затем одновременно нажмите Shift и ), то символ появится в нижней части экрана, и редактор перейдёт в режим командной строки. Это гарантирует, что вы сейчас именно вводите команду, а не редактируете файл. Помните, что регистр вводимых команд важен.
У большинства команд есть укороченные версии. Необязательная часть дается в квадратных скобках: к[оманда]
Команды, данные курсивом, подходят только для Vim (не реализованы в Vi).
Выйти безопасно (не срабатывает, если есть несохраненные изменения)
:q[uit] Выйти из текущего окна Vim. Если это окно — последнее, то выйти из Vim. Если в текущем буфере есть несохраненные изменения, команда не сработает. :qa[ll] Закрыть все окна и выйти из Vim. Не сработает, если хотя бы в одном буфере есть несохраненные изменения.
Выйти с подтверждением (запрашивает подтверждение, если есть несохраненные изменения)
:conf[irm] q[uit] Закрыть все окна и выйти из Vim. Запрашивает подтверждение, если есть буферы с несохраненными изменениями. :conf[irm] xa[ll] Сохранить все изменения, закрыть все окна и выйти из Vim. Запрашивает подтверждение, если какие–либо буферы не могут быть сохранены.
Записать (сохранить) изменения и выйти
:wq Записать текущий буфер в соответствующий ему файл (даже если изменений не было) и закрыть окно. :wqa[ll] для всех окон. :wq! То же самое, но записывает даже файлы, отмеченные только для чтения (read-only). :wqa[ll]! для всех окон. :x[it], ZZ(но с некоторыми особенностями). Сохранить файл только если в нем есть изменения и выйти, :xa[ll] для всех окон.
Отменить (и потерять) изменения и выйти
:q[uit]! ZQ Выйти без сохранения, в том числе когда есть изменения в видимых буферах. Не сработает, если изменения есть также и в скрытых буферах. :qa[ll]!, :quita[ll][!] Выйти без сохранения, отменяя все изменения как в видимых, так и в скрытых буферах.
Нажмите Enter чтобы выполнить введенную команду.
Этот ответ все-таки не охватывает все возможные способы выйти из Vim. Полный список можно найти в документации Vim
На момент публикации все ссылки верны и ведут на англоязычную версию документации, но сайт временно недоступен. Когда он поднимется, я добавлю ссылки на русскоязычную версию.
Vim также имеет встроенную документацию. Чтобы ее открыть: Esc:helpEnter. Чтобы использовать русскоязычную встроенную документацию, необходимо включить русскую локализацию в настройках Vim
Это перевод собственного ответа на EN.SO. При написании использовалась документация Vim и, в качестве ориентира и источника вдохновения, ответы других пользователей, особенно @dirvine.

Комментариев нет:

Отправить комментарий