How do I exit the Vim editor?

Created 06.08.2012 12:25
Viewed 2.34M times
4249 votes

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.

10
Comments
Are you just trying to quit VIM ? If this is the case, press "escape" and then type ':q' by Pop, 06.08.2012 12:28
Don't forget the colon! You should type :quit and then hit the [ENTER] key. by Farahmand, 04.03.2014 18:33
It's really easy to learn the basics of vim, and it's built right into your system. In terminal type "vimtutor". 25 minutes later you will be going faster than your usual text editor! by Mark Robson, 26.01.2015 12:11
Check here more commands. by Toni, 07.08.2015 15:36
To prevent git commit sending you to vim in the future: git config --global core.editor="nano" by Tom Kelly, 24.05.2017 03:19
Not mentioned yet; but if you are working in a GUI, you can use gvim and close the window. (If there are unsaved changes it will prompt Save/Discard/Cancel). by M.M, 24.05.2017 04:02
@Toni Why not use a printable single page cheat sheet? Regular qwerty version and dvorak. by nilon, 29.11.2018 13:15
From the command line you can quit vim as soon as you entered it: vim --cmd q . This can be used along with -V option: vim -V20vim.log --cmd exe +q. The newly created vim.log can be useful for diagnostic/debugging purposes. by MAGA, 21.02.2019 01:11
@TomKelly Thanks a lot it helped me but it's actually git config --global core.editor "nano" with a space, not a = sign by Jérôme MEVEL, 17.04.2019 07:29
You can search in :help like in every other window by typing /<some text> which searches for occurences of <some text> by Ahmad, 29.12.2020 00:13
Show remaining 5 comments
Answers 10
18
5394

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 (i.e. exit with error)

You can also exit Vim directly from "Normal 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.

06.08.2012 12:46
Comments
Unless you have remapped esc or have a weird mapping in your .vimrc then it definitely should. If on linux type xev and make sure escape is the keytype you get when you hit escape. by dirvine, 11.06.2014 23:49
Remember you can use ctrl+c if you can't use Esc (like me because my shell is in TotalTerminal). vim.wikia.com/wiki/Avoid_the_escape_key by dotnetCarpenter, 27.01.2015 15:12
:x == ZZ but :x != :wq. :x write file iff file has changed, :wq write file always (matter i.e. when using inotify). by Hauleth, 05.02.2015 00:27
To be honest, I have a harder time using vim's help system than using vim itself, and mostly rely on quick ref cards and online documentation. by bgvaughan, 08.07.2015 06:40
@bgvaughan I don't find vim's help any use at all to discover and learn about new features. I use it purely as a reference. Fortunately there are books (practical vim) and sites (learn vimscript the hard way) which help here, plus there's a stack exchange site devoted to vim vi.stackexchange.com) by User, 24.09.2015 10:20
The first statement ("Hit the Esc key; that goes into command mode.") is based on a common misunderstanding of Vi(m). The Esc (if needed) is the final part of the current command, and when you finish it this way you can type the next command. by Olaf Seibert, 28.10.2015 16:23
Esc only goes to command mode if you're still in input mode. If you're in Ex mode, it does not: E492: Not an editor command: ^[:q by aij, 21.07.2016 18:07
:x! does as it mentioned but add confirmation as well. I always use this instead of :wq! by Mark, 05.01.2017 19:29
if you don't have permissions on the file but have sudo permissions :w ! sudo tee % by tvlooy, 23.05.2017 18:53
What's the difference between "Save and quit" and "Write and quit"? by Stevoisiak, 25.05.2017 03:20
If you have only read only permissions to the file, :wq! won't write it. If that happened, it would be a security flaw in the OS. by sid-m, 25.05.2017 05:48
@StevenVascellaro There is no difference; writing to a file and saving the file mean the exact same thing. by victor, 19.07.2017 22:17
What if there is no escape key?? by Elliot Cameron, 28.10.2017 18:17
The use ctrl [ to do the same. by dirvine, 29.10.2017 12:30
Sometimes, Esc is not enough. You may need to type Esc multiple times to be sure. (E.g. After pressing ^V or ^O in Insert mode.) (Of course, Heikki covered this in depth.) by jpaugh, 12.02.2018 23:23
You can search in :help like in every other window by typing /<some text> which searches for occurences of <some text> by WorldSEnder, 17.06.2018 21:07
As for getting help and more so learning the basics: check the command vimtutor. It's interactive and has you perform common tasks like inserting text, replacing text, lines, deletion, saving, loading etc. by Pryftan, 10.11.2019 19:40
@sid-m Yes and no. That depends on if you're say root. But generally speaking you're right. It would be more correct to say that it works if vim is in read only mode. Then assuming you have permission to write to the file itself then you can force a write (it will turn off read only mode). by Pryftan, 10.11.2019 19:42
Show remaining 13 comments
16
278

Pictures are worth a thousand Unix commands and options:

Enter image description here

I draw this to my students each semester and they seem to grasp vi afterwards.

vi is a finite state machine with only three states.

Upon starting, vi goes into COMMAND mode, where you can type short, few character commands, blindly. You know what you are doing; this isn't for amateurs.

When you want to actually edit text, you should go to INSERT mode with some one-character command:

  • i: go to INSERT in the place of the cursor
  • I: go to INSERT mode at the beginning of the line
  • a: append after the cursor
  • A: append at the end of line
  • o: open a new line below the current line
  • O: open a new line in the place of the current line

Now, answering the question: exiting.

You can exit vi from EX mode:

  • q: if you haven't made any modifications, or saved them beforehand
  • q!: ignores any modifications and quit
  • wq: save and quit
  • x: this is equal to wq

w and x accept a file name parameter. If you started vi with a filename, you need not give it here again.

At last, the most important: how can you reach EX mode?

EX mode is for long commands that you can see typing at the bottom line of the screen. From COMMAND mode, you push colon, :, and a colon will appear at the bottom line, where you can type the above commands.

From INSERT mode, you need to push ESC, i.e. the Escape button, going to COMMAND mode, and then : to go to EX mode.

If you are unsure, push ESC and that will bring you to command mode.

So, the robust method is ESC-:-x-Enter which saves your file and quits.

26.05.2017 12:24
Comments
Thank you, the image is very helpful. However, for me w doesn't change from Ex to Command mode, but Esc does. What am I doing wrong? by Nick Volynkin, 28.05.2017 05:24
If you write w-Enter that saves your file and goes back to COMMAND mode. I wrote it to have a full picture of save & quit commands. by Gergely, 28.05.2017 05:35
oh, so you mean :w. Then it makes perfect sense. By the way, is there a command to reload from disk (that is, to revert changes but not close the file)? If so, it could be next to w in the diagram. by Nick Volynkin, 28.05.2017 09:50
What you've labeled command mode is actually normal mode. What you've labeled ex mode is actually command mode. Ex mode is a different beast altogether! by jpaugh, 12.02.2018 23:35
@jpaugh do you have a reference for this? by Gergely, 13.02.2018 08:44
@Gergely Well, I finally found the vim documentation: :help vim-modes. by jpaugh, 13.02.2018 14:58
About Ex mode: "Like Command-line mode, but after entering a command, you remain in Ex mode." The only way to get out of ex mode (that I know) is to use :vi to go back to normal mode. Regular command mode "releases" you to normal mode as soon as you enter one command. by jpaugh, 13.02.2018 15:00
(FWIW, I learned about ex mode the hard way: I entered it accidentally (several times), and was trapped until I used ^C or learned about it. I never forgot the lesson! ;-) by jpaugh, 13.02.2018 15:01
@Gergely I just figured out the confusion! From the docs, normal mode is also called command mode! So, command mode != command-line mode. Wow! by jpaugh, 13.02.2018 15:04
@NickVolynkin the command to reload from disk is :e (or more likely :e! since it will warn you about unsaved changes without the !) by JDS, 26.03.2018 13:15
I dunno about O.G. vi (the visual mode for ex), but in vim, the modes are normal, insert, Ex, command, and visual. Normal is the default mode where pressing :q will exit vim. Ex mode emulates ex and is accessed via Q. Command mode is accessed via : from normal and visual mode, and visual/visual-line/visual-block mode is a neat mode lets you highlight text and perform special operations (Try Ctrl-v and go down until you have the right-most column selected for a whole block, then press A to go into insert mode and type. The text will be appended on every line you selected) by Braden Best, 01.04.2018 22:38
Isn't there a longer name for "EX"? "Extended"? by Peter Mortensen, 21.08.2019 09:58
@PeterMortensen ed is the original text editor. From there we got em which added video input, and ex (short for EXtended) is basically a less processor-demanding em. vi is built upon ex, and vim is built upon vi. ed => em => ex => vi => vim (=> gvim?) by mazunki, 16.05.2020 15:12
In original vi there is "open mode" as well, which is kind of a one-line normal mode with its own variant on insert mode. This is useful if you ever take a time machine back to the 1980s and have to work on a 1200 baud modem. You get there by typing :o by gpvos, 01.07.2020 10:18
says something about the learning curve of vi, that you should know about state machines before attempting to use it by Nikolai R Kristiansen, 26.04.2021 09:21
Unix is created by programmers for programmers by Gergely, 26.04.2021 10:32
Show remaining 11 comments
0
190

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:helpReturn 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.

08.06.2015 13:34
3
89

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.

28.01.2014 10:59
Comments
I also use this to abort a git commit, or visudo, or crontab, … by Josh Lee, 03.02.2017 18:13
Aborting a git commit with :q! works fine, since git's checking for a non-empty message and not a non-zero exit code. by moopet, 30.11.2019 10:03
I know it works, it's just that :cq doesn't require the shift key. :-) by Sue Spence, 08.01.2020 13:39
4
54

This is for the worst-case scenario of exiting Vim if you just want out, have no idea what you've done and you don't care what will happen to the files you opened.

Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter

This should get you out most of the time.

Some interesting cases where you need something like this:

  • iCtrl-ovg (you enter insert mode, then visual mode and then operator pending mode)

  • QappendEnter

  • iCtrl-ogQCtrl-r=Ctrl-k (thanks to porges for this case)

  • :set insertmode (this is a case when Ctrl-\Ctrl-n returns you to normal mode)


Edit: This answer was corrected due to cases above. It used to be:

EscEscEsc:qa!Enter

However, that doesn't work if you have entered Ex mode. In that case you would need to do:

viEnter:qa!Enter

So a complete command for "I don't want to know what I've done and I don't want to save anything, I just want out now!" would be

viEnterEscEscEsc:qa!Enter

24.06.2015 13:38
Comments
@cavalcade This is an extremely general method of ensuring the editor is in normal mode then safely quitting. In normal usage all you need is :q or :wq by Dan Passaro, 23.05.2017 19:55
Not general enough! What about if I (a beginner) typed i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>? by porges, 24.05.2017 05:33
@porges thanks for the test case! There are also some other test cases which prove that the original method was woeful. I edited the answer to be more general now. by Heikki Naski, 24.05.2017 06:07
@HeikkiNaski at least for me I need Enter after Ctrl-C as well (to escape the expression register) by porges, 24.05.2017 07:26
1
43

In case you need to exit Vim in easy mode (while using -y option) you can enter normal Vim mode by hitting Ctrl + L and then any of the normal exiting options will work.

18.07.2014 13:48
Comments
Yet another option: you can use Ctrl+O to leave INSERT mode temporarily then enter :q. Trick with this combination is useful in normal vim as well to execute single command and return back to INSERT mode. by Andrey Starodubtsev, 17.09.2015 12:08
2
32

Vim has three modes of operation: Input mode, Command mode & Ex mode.

Input mode - everything that you type, all keystrokes are echoed on the screen.

Command mode or Escape mode - everything that you type in this mode is interpreted as a command.

Ex mode - this is another editor, ex. It is a line editor. It works per line or based on a range of lines. In this mode, a : appears at the bottom of the screen. This is the ex editor.

In order to exit Vim, you can exit while you are in either the ex mode or in the command mode. You cannot exit Vim when you are in input mode.

Exiting from ex mode

  1. You need to be sure that you are in the Command mode. To do that, simply press the Esc key.

  2. Go to the ex mode by pressing the : key

  3. Use any of the following combinations in ex mode to exit:

    :q - quit :q! - quit without saving :wq - save & quit or write & quit :wq! - same as wq, but force write in case file permissions are readonly :x - write & quit :qa - quit all. useful when multiple files are opened like: vim abc.txt xyz.txt

Exiting from command mode

  1. Press the escape key. You probably have done this already if you are in command mode.

  2. Press capital ZZ (shift zz) - save & exit

  3. Press capital ZQ (shift zq) - exit without saving.

24.05.2017 02:46
Comments
What you're calling "ex mode" is actually called command-line mode. It allows you to enter ex commands, but with some important differences. by jpaugh, 13.02.2018 15:07
Hmm no. You're forgetting visual mode. by Pryftan, 10.11.2019 19:47
0
30

After hitting ESC (or cmd + C on my computer) you must hit : for the command prompt to appear. Then, you may enter quit.

You may find that the machine will not allow you to quit because your information hasn't been saved. If you'd like to quit anyway, enter ! directly after the quit (i.e. :quit!).

28.11.2014 15:25
4
22

I got Vim by installing a Git client on Windows. :q wouldn't exit Vim for me. :exit did however...

05.02.2015 11:30
Comments
Similarly for vim doing git on a macintosh this worked. by Joel, 29.04.2015 09:55
@Joel just checked this on my mac, both commands are legit (vim -version 7.3). by Nick Volynkin, 08.06.2015 13:47
For Git Bash on windows, in Vim sometimes ESC not working. use CTRL + [ instead. by Val, 08.09.2017 06:53
@Val That looks strangely familiar. Iirc that's because the two do the same thing. As in ^[ is the same as ESC. That's interesting that Windows makes it more complicated. And amusing. by Pryftan, 10.11.2019 19:49
0
13

The q command with a number closes the given split in that position.

:q<split position> or :<split position>q will close the split in that position.

Let's say your Vim window layout is as follows:

-------------------------------------------------
|               |               |               |
-------------------------------------------------
|               |               |               |
|               |               |               |
|    Split 1    |    Split 2    |     Split 3   |
|               |               |               |
-------------------------------------------------

If you run the q1 command, it will close the first split. q2 will close the second split and vice versa.

The order of split position in the quit command does not matter. :2q or :q2 will close the second split.

If the split position you pass to the command is greater than the number of current splits, it will simply close the last split.

For example, if you run the q100 on the above window setup where there are only three splits, it will close the last split (Split 3).

The question has been asked here.

12.02.2018 23:41