How to exit the Vim editor?
I'm stuck and cannot escape. It says:
"type :quit<Enter> to quit VIM"
But when I type that it simply appears in the object body.
Hit the Esc key to enter "Normal mode". Then you can type :
to enter "Command-line mode". A colon ( :
) will appear at the bottom of the screen and you can type in one of the following commands. To execute a command, press the Enter key.
:q
to quit (short for :quit
) :q!
to quit without saving (short for :quit!
) :wq
to write and quit :wq!
to write and quit even if file has only read permission (if file does not have write permission: force write) :x
to write and quit (similar to :wq
, but only write if there are changes) :exit
to write and exit (same as :x
) :qa
to quit all (short for :quitall
) :cq
to quit without saving and make Vim return non-zero error (ie exit with error) You can also exit Vim directly from "Command mode" by typing ZZ
to save and quit (same as :x
) or ZQ
to just quit (same as :q!
). (Note that case is important here. ZZ
and zz
do not mean the same thing.)
Vim has extensive help - that you can access with the :help
command - where you can find answers to all your questions and a tutorial for beginners.
Before you enter a command, hit the Esc key . After you enter it, hit the Return to confirm.
Esc finishes the current command and switches Vim to normal mode. Now if you press :, the :
will appear at the bottom of the screen. This confirms that you're actually typing a command and not editing the file.
Most commands have abbreviations, with optional part enclosed in brackets: c[ommand]
.
Commands marked with '*' are Vim-only (not implemented in Vi).
Safe-quit (fails if there are unsaved changes):
:q[uit]
Quit the current window. Quit Vim if this is the last window. This fails when changes have been made in current buffer. :qa[ll]
* Quit all windows and Vim, unless there are some buffers which have been changed. Prompt-quit (prompts if there are unsaved changes)
:conf[irm] q[uit]
* Quit, but give prompt when there are some buffers which have been changed. :conf[irm] xa[ll]
* Write all changed buffers and exit Vim. Bring up a prompt when some buffers cannot be written. Write (save) changes and quit:
:wq
Write the current file (even if it was not changed) and quit. Writing fails when the file is read-only or the buffer does not have a name. :wqa[ll]
* for all windows. :wq!
The same, but writes even read-only files. :wqa[ll]!
* for all windows. :x[it]
, ZZ
(with details). Write the file only if it was changed and quit, :xa[ll]
* for all windows. Discard changes and quit:
:q[uit]!
ZQ
* Quit without writing, also when visible buffers have changes. Does not exit when there are changed hidden buffers. :qa[ll]!
*, :quita[ll][!]
* Quit Vim, all changes to the buffers (including hidden) are lost. Press Return to confirm the command.
This answer doesn't reference all Vim write and quit commands and arguments. Indeed, they are referenced in the Vim documentation.
Vim has extensive built-in help, type Esc :help
Return to open it.
This answer was inspired by the other one, originally authored by @dirvine and edited by other SO users. I've included more information from Vim reference, SO comments and some other sources. Differences for Vi and Vim are reflected too.
If you want to quit without saving in vim and have vim return a non-zero exit code, you can use :cq
.
I use this all the time because I can't be bothered to pinky shift for !
. I often pipe things to vim which don't need to be saved in a file. We also have an odd SVN wrapper at work which must be exited with a non-zero value in order to abort a checkin.
上一篇: 检测未定义的对象属性
下一篇: 如何退出Vim编辑器?