Как выйти из редактора Vim?
Я застрял и не могу сбежать. Это говорит:
"type :quit<Enter> to quit VIM"
Но когда я набираю текст, он просто появляется в теле объекта.
17 ответов
Нажмите клавишу Esc, чтобы войти в "Нормальный режим". Тогда вы можете напечатать :
войти в "Режим командной строки". Двоеточие (:
) появится внизу экрана, и вы можете ввести одну из следующих команд. Чтобы выполнить команду, нажмите клавишу Enter.
:q
бросить курить:quit
):q!
выйти без сохранения (сокращение от:quit!
):wq
написать и выйти:wq!
для записи и выхода, даже если файл имеет только разрешение на чтение (если файл не имеет разрешения на запись: принудительная запись):x
написать и выйти (аналогично:wq
, но пишите только если есть изменения):exit
написать и выйти (так же, как:x
):qa
бросить все:quitall
):cq
выйти без сохранения и заставить Vim вернуть ненулевую ошибку (т.е. выйти с ошибкой)
Вы также можете выйти из Vim напрямую из "Командного режима", набрав ZZ
сохранить и выйти (так же, как :x
) или же ZQ
просто выйти (так же, как :q!
). (Обратите внимание, что дело здесь важно. ZZ
а также zz
не значит одно и то же.)
Vim имеет обширную помощь - что вы можете получить доступ с :help
Команда - где вы можете найти ответы на все ваши вопросы и учебник для начинающих.
Картинки стоят тысячи команд и опций Unix:
Я рисую это своим студентам каждый семестр, и они, кажется, потом понимают vi.
vi - конечный автомат с тремя состояниями.
После запуска vi переходит в режим КОМАНДЫ, где вы можете слепо набирать короткие команды из нескольких символов. Вы знаете, что делаете; это не для любителей.
Если вы хотите на самом деле редактировать текст, вы должны перейти в режим INSERT с помощью одной односимвольной команды:
- i: перейти на INSERT вместо курсора
- I: перейти в режим INSERT в начале строки
- A: добавить после курсора
- A: добавить в конце строки
- o: открыть новую строку под текущей строкой
- O: открыть новую строку вместо текущей
Теперь отвечаю на вопрос: выход.
Вы можете выйти из vi из режима EX:
- q: если вы не сделали никаких изменений или сохранили их заранее
- q!: игнорирует любые модификации и выходит
- WQ: сохранить и выйти
- х: это равно WQ
w
а также x
принять параметр имени файла. Если вы запустили vi с именем файла, вам не нужно указывать его здесь снова.
Наконец, самое важное: как добраться до режима EX?
Режим EX предназначен для длинных команд, которые вы можете увидеть, набрав в нижней строке экрана. В режиме КОМАНДЫ вы толкаете двоеточие, :
, и в нижней строке появится двоеточие, где вы можете ввести вышеуказанные команды.
В режиме INSERT вам нужно нажать ESC, то есть кнопку Escape, перейти в режим COMMAND, а затем:, чтобы перейти в режим EX.
Если вы не уверены, нажмите ESC, и это приведет вас в командный режим.
Итак, надежный метод - ESC-:-x-Enter, который сохраняет ваш файл и завершает работу.
Прежде чем вводить команду, нажмите клавишу Esc. После ввода нажмите " Return" для подтверждения.
Esc завершает текущую команду и переключает Vim в нормальный режим. Теперь, если вы нажмете :, :
появится в нижней части экрана. Это подтверждает, что вы на самом деле вводите команду, а не редактируете файл.
Большинство команд имеют сокращения, а необязательные части заключены в квадратные скобки: c[ommand]
,
Команды, отмеченные *, предназначены только для Vim (не реализованы в Vi).
Безопасный выход (не выполняется, если есть несохраненные изменения):
:q[uit]
Выйти из текущего окна. Выйдите из Vim, если это последнее окно. Это терпит неудачу, когда изменения были сделаны в текущем буфере.:qa[ll]
* Закройте все окна и Vim, если нет каких-либо буферов, которые были изменены.
Promit-quit (запрашивает, есть ли несохраненные изменения)
:conf[irm] q[uit]
* Выйти, но дать подсказку, когда есть некоторые буферы, которые были изменены.:conf[irm] xa[ll]
* Запишите все измененные буферы и выйдите из Vim. Вызовите подсказку, когда некоторые буферы не могут быть записаны.
Записать (сохранить) изменения и выйти:
:wq
Запишите текущий файл (даже если он не был изменен) и выйдите. Сбой записи, когда файл доступен только для чтения или у буфера нет имени.:wqa[ll]
* для всех окон.:wq!
То же самое, но пишет даже файлы только для чтения.:wqa[ll]!
* для всех окон.:x[it]
,ZZ
(с подробностями). Запишите файл, только если он был изменен, и выйдите,:xa[ll]
* для всех окон.
Отменить изменения и выйти:
:q[uit]!
ZQ
* Выход без записи, также когда видимые буферы имеют изменения. Не выходит при смене скрытых буферов.:qa[ll]!
*,:quita[ll][!]
* Выйдите из Vim, все изменения в буферах (включая скрытые) будут потеряны.
Нажмите Return, чтобы подтвердить команду.
Этот ответ не ссылается на все команды и аргументы Vim write и quit. Действительно, они упоминаются в документации Vim.
Vim имеет обширную встроенную помощь, типа Esc :help
Вернитесь, чтобы открыть его.
Этот ответ был вдохновлен другим, изначально созданным @dirvine и отредактированным другими пользователями SO. Я включил больше информации из справочника Vim, комментариев SO и некоторых других источников. Различия для Vi и Vim также отражены.
Если вы хотите выйти без сохранения в Vim и заставить Vim возвращать ненулевой код выхода, вы можете использовать :cq
,
Я использую это все время, потому что я не могу быть обеспокоен мизинцем !
, Я часто передаю в Vim вещи, которые не нужно сохранять в файле. У нас также есть странная оболочка SVN на работе, которая должна быть закрыта с ненулевым значением, чтобы прервать регистрацию.
Это для наихудшего сценария выхода из Vim, если вы просто хотите выйти, не представляете, что вы сделали, и вам все равно, что произойдет с файлами, которые вы открыли.
Ctrl-cEnterEntervi
ВведитеCtrl- \Ctrl-n:qa!
Войти
Это должно вытащить тебя большую часть времени.
Несколько интересных случаев, когда вам нужно что-то вроде этого:
i
Ctrl-Ovg
(вы входите в режим вставки, затем в визуальный режим и затем в режим ожидания оператора)Qappend
Войтиi
Ctrl-OgQ
Ctrl-R=
Ctrl-k(спасибо porges за этот случай):set insertmode
(это тот случай, когдаCtrl- \Ctrl-n возвращает вас в обычный режим)
Изменить: Этот ответ был исправлен из-за случаев выше. Это было:
EscEscEsc:qa!
Войти
Однако это не сработает, если вы вошли в режим Ex. В этом случае вам нужно будет сделать:
vi
Войти:qa!
Войти
Итак, полная команда: "Я не хочу знать, что я сделал, и я не хочу ничего сохранять, я просто хочу сейчас!" было бы
vi
ВведитеEscEscEsc:qa!
Войти
Если вам нужно выйти из Vim в легком режиме (при использовании -y
опция) вы можете войти в нормальный режим Vim, нажав Ctrl + L, и тогда любой из нормальных вариантов выхода будет работать.
Vim имеет три режима работы: режим ввода, командный режим и режим Ex.
Режим ввода - все, что вы вводите, все нажатия клавиш отображаются на экране.
Командный режим или режим Escape - все, что вы вводите в этом режиме, интерпретируется как команда.
Ex mode - это другой редактор, ex. Это линейный редактор. Он работает на строку или на основе ряда строк. В этом режиме в нижней части экрана отображается значок :. Это бывший редактор.
Чтобы выйти из Vim, вы можете выйти, находясь в режиме ex или в командном режиме. Вы не можете выйти из Vim, когда находитесь в режиме ввода.
Выход из режима ex
Вы должны быть уверены, что находитесь в командном режиме. Для этого просто нажмите клавишу Esc.
Перейдите в режим ex, нажав клавишу :
Для выхода используйте любую из следующих комбинаций в режиме ex:
:q
- уволиться:q!
- выйти без сохранения:wq
- сохранить и выйти или написать и выйти:wq!
- так же, как wq, но принудительная запись в случае, если права доступа к файлу доступны только для чтения:x
- написать и выйти:qa
- бросить все. полезно, когда несколько файлов открываются как:vim abc.txt xyz.txt
Выход из командного режима
Нажмите клавишу выхода. Вы, вероятно, уже сделали это, если находитесь в командном режиме.
Пресса заглавная ZZ (
shift zz
) - сохранить и выйтиПресса заглавная ZQ (
shift zq
) - выход без сохранения.
После нажатия ESC (или cmd + C на моем компьютере) вы должны нажать : для появления командной строки. Затем вы можете ввести quit
,
Вы можете обнаружить, что машина не позволит вам выйти, потому что ваша информация не была сохранена. Если вы все равно хотите выйти, введите ! сразу после выхода (т.е. :quit!
).
Я получил Vim, установив клиент Git в Windows. :q
не выйдет из Vim для меня. :exit
сделал однако...
Я хотел бы добавить свои два цента на этом. Вопрос был задан здесь.
q
Команда с номером закрывает данное разделение в этой позиции.
:q<split position>
или же :<split position>q
закроет разделение в этой позиции.
Допустим, ваш макет окна Vim выглядит следующим образом:
-------------------------------------------------
| | | |
-------------------------------------------------
| | | |
| | | |
| Split 1 | Split 2 | Split 3 |
| | | |
-------------------------------------------------
Если вы запустите q1
команда, это закроет первый сплит. q2
закроет второй сплит и наоборот.
Порядок позиции разделения в команде quit не имеет значения. :2q
или же :q2
закроет второй сплит.
Если позиция разделения, которую вы передаете команде, больше, чем количество текущих разделений, она просто закроет последнее разделение.
Например, если вы запустите q100
в приведенном выше окне настройки, где есть только три разделения, оно закроет последний разделить (Разделение 3).
Один гарантированный способ - убить порт, на котором запущен vim.
! kill - 9 $(ps | grep vim | cut -d " " -f 1)
В любом из четырех режимов: вставка , визуальный , командный или режим командной строки (ex), нажмите эту кнопку, чтобы сохранить изменения, а затем выйдите из vim:
Alt-Z
Z
То есть нажать:
alt + shift + z
тогда
shift + z
Почему это работает: из режима вставки и, по-видимому, других режимов вы можете выйти в командный режим и выполнить команду, удерживая клавишу Alt с любым командным символом. Второй Alt+Shift+Z игнорируется, поэтому вы должны отпустить Alt, но сохранить Shift. Работайте над мышечной памятью! :-)
Q-первый против двоеточия-первый
Многие знают о стратегии выхода двоеточие-q. Но для дополнительной стратегии и потомства, вот метод q-colon-iq:
В
Normal
режим вы можете ввести:
q:iq<enter>
Если вы внимательно посмотрите и прищуритесь, вы почти сможете прочитать эту команду вслух как «быстро», так как это медленный способ выхода.
(Примечание: несмотря на мою попытку пошутить, это работает!)
Вот как вы можете выйти из Vim. Нажмите Ctrl & 'Z', затем 'X' и 'C'.
Ctrl -> +Z -> +X -> +C
Это на самом деле невероятно легко бросить vim
,
Нажмите Escape, дважды обернитесь, пните кота, приготовьте идеальную чашку чая, пробежите четыре минуты, поднимитесь на Эверест, запустите Кессель-Бег до 12 парсеков, захватите железный трон, достигните мира во всем мире, нажмите :q
Войти
:q для довольно :wq сохранить и довольно :q! бросить, не разорвавшись
Нажав Esc (или Ctrl + C), вы набираете :q
где q
обозначает quit
,
Вы можете ожидать, что машина не позволит вам выйти, потому что вы не сохранили то, над чем работаете.
В этом случае вы должны ввести :wq
сохранить и выйти или :q!
для выхода без сохранения.