Я застрял и не могу сбежать. Он говорит:
"type :quit<Enter> to quit VIM"
Но когда я набираю текст, он просто появляется в теле объекта.
Я застрял и не могу сбежать. Он говорит:
"type :quit<Enter> to quit VIM"
Но когда я набираю текст, он просто появляется в теле объекта.
Нажмите кнопку 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
, где вы можете найти ответы на все свои вопросы и учебное пособие для начинающих.
:x
== ZZ
, но :x
! = :wq
. :x
записывать файл, если файл был изменен, :wq
записывать файл всегда (имеет значение, например, при использовании inotify
).
- person Hauleth; 05.02.2015
Esc
переходит в командный режим, только если вы все еще находитесь в режиме ввода. Если вы находитесь в режиме Ex, этого не произойдет: E492: Not an editor command: ^[:q
- person aij; 21.07.2016
:x!
делает то, что упоминалось, но также добавляет подтверждение. Я всегда использую это вместо :wq!
- person Mark; 05.01.2017
:w ! sudo tee %
- person tvlooy; 23.05.2017
:wq!
не будет его записывать. Если бы это произошло, это было бы брешь в безопасности ОС.
- person sid-m; 25.05.2017
ctrl [
, чтобы сделать то же самое.
- person dirvine; 29.10.2017
Esc
недостаточно. Для уверенности может потребоваться ввести Esc
несколько раз. (Например, после нажатия ^V
или ^O
в режиме вставки.) (Конечно, Хейкки подробно рассказал об этом.)
- person jpaugh; 13.02.2018
:help
, как и в любом другом окне, набрав /<some text>
, который ищет совпадения <some text>
- person WorldSEnder; 18.06.2018
Картинки стоят тысячи команд и опций Unix:
Я рисую это своим студентам каждый семестр, и они, кажется, понимают vi впоследствии.
vi - это конечный автомат всего с тремя состояниями.
После запуска vi переходит в режим КОМАНДЫ, в котором вы можете набирать короткие команды, состоящие из нескольких символов, вслепую. Вы знаете, что делаете; это не для любителей.
Если вы действительно хотите отредактировать текст, вы должны перейти в режим INSERT с помощью какой-нибудь односимвольной команды:
Теперь, отвечая на вопрос: выход.
Вы можете выйти из vi из режима EX:
w
и x
принимают параметр имени файла. Если вы запустили vi с именем файла, вам не нужно указывать его здесь снова.
Наконец, самое главное: как попасть в режим EX?
Режим EX предназначен для длинных команд, которые вы можете увидеть при вводе в нижней строке экрана. В режиме КОМАНДА вы нажимаете двоеточие, :
, и двоеточие появляется в нижней строке, где вы можете вводить указанные выше команды.
В режиме INSERT вам нужно нажать ESC, то есть кнопку Escape, перейти в режим COMMAND, а затем: чтобы перейти в режим EX.
Если вы не уверены, нажмите ESC, и вы перейдете в командный режим.
Итак, надежным методом является ESC -: - x-Enter, который сохраняет ваш файл и завершает работу.
w
не переходит из Ex в командный режим, а Esc
меняется. Что я делаю неправильно?
- person Nick Volynkin; 28.05.2017
:w
. Тогда это имеет смысл. Кстати, есть ли команда перезагрузить с диска (то есть вернуть изменения, но не закрыть файл)? Если да, то он может быть рядом с w
на диаграмме.
- person Nick Volynkin; 28.05.2017
:help vim-modes
.
- person jpaugh; 13.02.2018
:vi
, чтобы вернуться в нормальный режим. Обычный командный режим переводит вас в нормальный режим, как только вы вводите одну команду.
- person jpaugh; 13.02.2018
^C
или не узнал об этом. Я никогда не забывал урок! ;-)
- person jpaugh; 13.02.2018
:e
(или, что более вероятно, :e!
, поскольку она предупредит вас о несохраненных изменениях без !
)
- person JDS; 26.03.2018
vi
(например, визуальный режим), но в vim это режимы normal
, insert
, Ex
, command
и visual
. Нормальный - это режим по умолчанию, в котором нажатие :q
приведет к выходу из vim. Режим Ex эмулирует ex и доступен через Q
. Доступ к командному режиму осуществляется через :
из обычного и визуального режима, а режим visual / visual-line / visual-block - это аккуратный режим, позволяющий выделять текст и выполнять специальные операции (попробуйте Ctrl-v и опускайтесь, пока не получите крайний правый столбец выбран для всего блока, затем нажмите A
, чтобы перейти в режим вставки и ввести текст. Текст будет добавлен в каждую выбранную вами строку)
- person Braden Best; 02.04.2018
ed
- оригинальный текстовый редактор. Отсюда мы получили em
, который добавил видеовход, а ex
(сокращение от EXtended), по сути, менее требователен к процессору em
. vi
построен на ex
, а vim
построен на vi
. ed
= ›em
=› ex
= ›vi
=› vim
(= ›gvim
?)
- person mazunki; 16.05.2020
vi
также есть открытый режим, который является своего рода однострочным нормальным режимом с собственным вариантом режима вставки. Это полезно, если вы когда-нибудь переносите машину времени в 1980-е и должны работать на модеме со скоростью 1200 бод. Вы попадете туда, набрав: o
- person gpvos; 01.07.2020
Прежде чем вводить команду, нажмите клавишу Esc. После ввода нажмите Return для подтверждения.
Esc завершает выполнение текущей команды и переключает Vim в нормальный режим. Теперь, если вы нажмете :, :
появится в нижней части экрана. Это подтверждает, что вы действительно набираете команду, а не редактируете файл.
У большинства команд есть сокращения, необязательная часть которых заключена в квадратные скобки: c[ommand]
.
Команды, отмеченные знаком «*», предназначены только для Vim (не реализованы в Vi).
Безопасный выход (не выполняется, если есть несохраненные изменения):
:q[uit]
Закройте текущее окно. Закройте Vim, если это последнее окно. Это не удается, если в текущий буфер были внесены изменения.:qa[ll]
* Закройте все окна и Vim, если не были изменены какие-либо буферы.Запросить выход (запрашивает, есть ли несохраненные изменения)
: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. Действительно, на них есть ссылки в документации Vim.
Vim имеет обширную встроенную справку, введите Esc :help
Return, чтобы открыть ее.
Этот ответ был вдохновлен другим ответом, первоначально созданным @dirvine и отредактированным другими пользователями SO. Я включил дополнительную информацию из справочника Vim, комментариев SO и некоторых других источников. Также отражены различия для Vi и Vim.
Если вы хотите выйти без сохранения в Vim и, чтобы Vim возвращал ненулевой код выхода, вы можете использовать :cq
.
Я использую это все время, потому что меня не беспокоит мизинец для !
. Я часто передаю в Vim вещи, которые не нужно сохранять в файл. У нас также есть нечетная оболочка SVN, которая должна быть завершена с ненулевым значением, чтобы прервать проверку.
:q!
работает нормально, поскольку git проверяет непустое сообщение, а не ненулевой код выхода.
- person moopet; 30.11.2019
Это наихудший сценарий выхода из Vim, если вы просто хотите выйти, не знаете, что сделали, и вам все равно, что произойдет с открытыми вами файлами.
Ctrl-c Enter Enter vi
Enter Ctrl- \ Ctrl- n :qa!
Enter
Это должно вывести вас из строя в большинстве случаев.
Несколько интересных случаев, когда вам нужно что-то вроде этого:
i
Ctrl-o vg
(вы входите в режим вставки, затем в визуальный режим, а затем в режим ожидания оператора)
Qappend
Enter
i
Ctrl-o gQ
Ctrl-r =
Ctrl-k (спасибо porges за этот случай)
:set insertmode
(это случай, когда Ctrl- \ Ctrl-n возвращает вас в нормальный режим)
Изменить: этот ответ был исправлен из-за приведенных выше случаев. Это было:
Esc Esc Esc :qa!
Enter
Однако это не сработает, если вы вошли в режим Ex. В этом случае вам нужно будет сделать:
vi
Enter :qa!
Enter
Итак, полная команда для «Я не хочу знать, что я сделал, и я не хочу ничего сохранять, я просто хочу уйти сейчас!» было бы
vi
Enter Esc Esc Esc :qa!
Enter
:q
или :wq
- person Dan Passaro; 23.05.2017
i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>
?
- person porges; 24.05.2017
Если вам нужно выйти из Vim в простом режиме (при использовании опции -y
), вы можете войти в обычный режим Vim, нажав Ctrl + L, а затем любой из обычных вариантов выхода будет работать.
Ctrl+O
, чтобы временно выйти из режима INSERT, а затем ввести :q
. Уловка с этой комбинацией полезна также в обычном vim для выполнения одной команды и возврата в режим INSERT.
- person Andrey Starodubtsev; 17.09.2015
Vim имеет три режима работы: режим ввода, командный режим и режим Ex.
Режим ввода - все, что вы вводите, все нажатия клавиш отражаются на экране.
Командный режим или режим выхода - все, что вы вводите в этом режиме, интерпретируется как команда.
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
однако ...
vim -version
7.3).
- person Nick Volynkin; 08.06.2015
Git Bash
в windows, в Vim
иногда ESC
не работает. используйте вместо этого CTRL
+ [
.
- person Val; 08.09.2017
^[
совпадает с ESC
. Интересно, что в Windows все усложняется. И забавно.
- person Pryftan; 10.11.2019
Команда q
с номером закрывает данную группу split в этой позиции.
:q<split position>
или :<split position>q
закроют разделение в этой позиции.
Допустим, у вас следующая компоновка окна Vim:
-------------------------------------------------
| | | |
-------------------------------------------------
| | | |
| | | |
| Split 1 | Split 2 | Split 3 |
| | | |
-------------------------------------------------
Если вы запустите команду q1
, она закроет первое разделение. q2
закроет второй сплит и наоборот.
Порядок разделения позиций в команде выхода не имеет значения. :2q
или :q2
закроют второй сплит.
Если позиция разделения, которую вы передаете команде, больше, чем количество текущих разделений, она просто закроет последнее разделение.
Например, если вы запустите q100
в настройке окна выше, где есть только три разделения, он закроет последнее разделение (Разделение 3).
Вопрос задан здесь. sub>
:quit
и затем нажать клавишу[ENTER]
. - person Farahmand   schedule 04.03.2014git commit
отправку вас в vim в будущем:git config --global core.editor="nano"
- person Tom Kelly   schedule 24.05.2017vim --cmd q
. Его можно использовать вместе с-V
опцией:vim -V20vim.log --cmd exe +q
. Недавно созданный vim.log может быть полезен для целей диагностики / отладки. - person MAGA   schedule 21.02.2019git config --global core.editor "nano"
с пробелом, а не знаком=
- person Jérôme MEVEL   schedule 17.04.2019