4 ms·
I barely use any Vim, but I'm more confused about there being some hidden complexity in exiting Vim that I'm not aware of. Isn't it just... [Esc] :wq ...or..
by ZenoArrow 9y ago
I barely use any Vim, but I'm more confused about there being some hidden complexity in exiting Vim that I'm not aware of.
Isn't it just...
[Esc] :wq
...or...
[Esc] :q!
...depending if you want to save the current document or not?
- gtsteve 9y agoImagine you don't know that. Now try to exit vim.
- ashark 9y agoAdd in the bonus confusion that you may not have even been trying to run vim, and in fact may not know what it is (hey, everyone's a beginner some time), but have landed there due to a default $EDITOR value. [EDIT] also, a typical mid-level computer user's tendency to slap "ESC" when panicked. Ha!
- fishywang 9y agoWhich OS/Linux distribution set default $EDITOR to vim? Personally I've never seen one, and I don't think vim is a sane default value for $EDITOR.
- recursive 9y agoDon't know about $EDITOR, but if you issue a git commit in Windows, and forget to specify -m, then you end up in vim.
- dom0 9y agoI dunno if it's actually vim or some variation on it, but it is the default on, for example, Arch Linux, although I believe most other distros dropped me into it as well (e.g. git commit / rebase -i). If there is such a thing as user hostile in the world of CLI tools, then dropping the user unannounced into vi with some open buffer most definitely counts as user hostile.
- 0xFFFE 9y agoIn Jessie, visudo lands you in nano, unless you explicitly set the $EDITOR.
- JdeBP 9y agoWhat are your thoughts on $VISUAL?
- bbcbasic 9y ago> you may not have even been trying to run vi git rebase -i For example
- tcoff91 9y agoOk, so anyone with any terminal experience but no vim experience would press <ctrl>-c. Then, the program tells them "Type :quit<Enter> to exit Vim" And if the user is capable of reading, they shouldn't have any problem. If they don't know about ctrl-c, they shouldn't be using a terminal editor.
- dsp1234 9y agoE37: No write since last change (add ! to override)
- zero_iq 9y agoTry actually following those instructions. They don't work. There is a step missing, and you may get warnings even if you know to hit escape first.
- Gracana 9y agoYou don't have to hit escape, ctrl-c puts you in normal mode.
- Bartweiss 9y agoIf vim opens and that's the first thing you try, then it'll work, yeah. But if you've typed anything, this won't quite work. <ctrl> c will take you out of insert mode, but won't offer any prompt. <ctrl> c again will bring up the quit prompt, but that's not intuitive the way doing it the first time is. And if you type the wrong thing after the first <ctrl> c, you'll break back into insert mode and have to take another run at it. I remember getting stuck in vim because git bash uses it as a default editor. It happened when I forgot to enter a commit message, which meant that I started typing a commit message and thereby lost the useful prompt when I went to quit. edit: per another thread, this gets far worse if you don't realize the ':' is active and not a prompt to "type: quit". That error sets off a maze that will never show you the prompt again to find your mistake.
- ZenoArrow 9y agoIn that case I'd just close the terminal window if I was running the terminal from a GUI session. Does that count?
- Etheryte 9y agoYou can also <Esc>-ZZ to save the file and exit. Very convenient to remember if you use Vim a lot.
- tcoff91 9y agoNo, it really is that easy. If you try to <ctrl>-c, the program even tells you to use :q It's just become a meme at this point.
- jayflux 9y agoBut why would i be pressing <ctrl>-c in the first place if i don't know any Vim commands? Edit: ah quit foreground process, ignore me
- tcoff91 9y ago<ctrl>-c is not a vim command. It's a universal terminal command. <ctrl>-c is how you kill the foreground process in bash, zsh, sh, windows command line, etc... If you don't know about <ctrl>-c you shouldn't be attempting to use a terminal based editor to begin with. Vim can't be blamed for people not knowing how to use a terminal.
- zeptomu 9y agoBecause it is the standard command to kill (i.e. send SIGINT) running programs in a terminal? E.g. ping, top, etc. all quit using Ctrl-C.
- masklinn 9y ago> If you try to <ctrl>-c, the program even tells you to use :q And then you do and it helpfully adds ":q" to the buffer. You're still in vim.
- splawn 9y agoIf you hit ctrl-c then you are no longer in insert mode (ctrl-c acts like esc for some reason), so no, it won't add anything to the buffer and ":q" will get you out. I don't blame people for being confused though.. I remember getting stuck in vim all the time back in the day because of a default $EDITOR value.
- djtriptych 9y agoor :q or ZZ or qa(!) or wqa(!) I love vim and I've used all of those at some point. I'd never pretend there's no learning curve, just that the learning curve is worth it.
- chocolatemario 9y agoNever forget ZZ. Or, my preferred method, suspend the process for later use.
- deanstag 9y agoCorrect. But as the article mentions, it might be confusing for developers who predominantly use IDEs and text editors that are not modal in nature.
- spydum 9y agoI think mostly it's people not being familiar with escape key. If you think about it, pretty rare you use Escape in anything other than a game..
- donarb 9y agoOn the Mac, the escape key has been used forever in dialogs as a surrogate for the Cancel button or for dismissing dialogs where the results are non-destructive.
- optimuspaul 9y agoIt baffles me that it isn't just ^C like every other unix program.
- rhinoceraptor 9y agoEvery other unix program is not an interactive editor, they don't care if stdout is a teleprinter, a physical terminal or a terminal emulator.
- kbp 9y agoIf you press ^C, it tells you how to quit. As to why it doesn't just exit, a lot of beginners would probably expect ^C in a text editor to copy text.
- VT_Drew 9y agoZZ also works as save and quit.
- bitcrusher 9y agoor even: [Esc] :x to save and exit.