
Stack Overflow: Helping One Million Developers Exit Vim (2017) - ktr
https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/
======
Datenstrom
Whenever I end up on another computer without my environment setup and end up
in nano because it is the default, it always takes me a while. There is the
cheat sheet at the bottom but as soon as the text appears I'll start
manipulating it using vim keybindings and delete things and whatever else
randomly. I always assume my fingers were not on the homerow correctly or
something first. It is very disorienting.

So I imagine it is far worse for someone who ends up in Vim the same way.

~~~
c22
This happens to me even in graphical text editors, my text ends up riddled
with ':w's I have to go back through and remove later.

~~~
phissk
Same for me :)

------
alexpetralia
This is probably the #1 problem with Unix-based systems in general for new
users. There are so many ways to exit a command prompt depending on the
application!

Off the top of my head: Ctrl+D, q, :q, exit, quit(), Ctrl+C, Ctrl+X.

Countless times have I been locked in an application and needed to cycle
through those memorized commands to escape. Imagine doing that as a newbie.

~~~
pinouchon
You forgot the most powerful of them all: Ctrl+Z followed by kill -9 pid

~~~
beatgammit
Or, `kill %1` if you backgrounded it in the current shell (or whenever number
`jobs` gives).

------
varjag
To use vim properly one must realize it's modal editor with two modes: beep,
and ruin everything.

------
waynecochran
My first year of grad school I was a TA for a first year computer science
course that was often taken by students from a variety of majors. The first
editing sessions I spent the whole lab time running around help students with
frozen vi editors.

The main problem is you don't start in "edit mode" and students expect to be
able to just start typing (which is a reasonable expectation). Who knows what
"command" they just invoked -- sometimes I just "ctrl-z, killall vi"

I learned to hate vi.

~~~
jki275
Why not just write the basic instructions up on the board? Or give them a
handout with the basic command keys?

~~~
na85
Why not just use an editor without awful UX?

~~~
jki275
It's not really awful, especially when you compare it to something like ed,
edlin, or edt...

~~~
na85
The fact that $thing has some negative qualities is not erased by pointing at
$otherThing which scores lower on that particular dimension.

~~~
jki275
There aren't really any editors that have no negative qualities...

vi is a very good editor. You have to learn about three things to use it
effectively. It's really not a high bar to entry.

------
genbit
first stuck in vim 13 years ago. No internet, no GUI, could not speak english,
1 book on unix/linux. So I had to reboot (hard reboot) computer, three times,
then re-install OS, since something broke because of hard-forced reboot.

~~~
ajross
Hah. First stuck in emacs ~26 years ago, on a dumb terminal (want to say
VT-102, maybe the VT-220's that were in the adjoining room). Tried everything
to get out of it with no success, was too embarassed to ask for help, and
eventually just power cycled the thing and walked away sheepishly.

Don't believe I ever got stuck in vi. All the cool kids were emacs users and
it was years before I bothered to learn it.

~~~
genbit
emac I tried as well, and then power reseted it too :D

------
koonsolo
Reminds me of the editor learning curves. The one of VIM is definitely correct
:D

[https://www.ihaveapc.com/wp-
content/uploads/2011/08/emacs_le...](https://www.ihaveapc.com/wp-
content/uploads/2011/08/emacs_learning_curves.png)

------
sly010
This is something that the most hardcore vim users couldn't ever figure out.
That's why they are still vim users.

------
phakding
First time I used vim more than a decade ago, I got stuck too. Kill vim from
other console and then googled it for future reference.

------
dmos62
I was always fascinated by the different groups in programming and the huge
differences between them. Frontend developers contrast with backend app
developers, but not nearly as much as frontend and low-level programmers. It's
a bit like human races or animal species that evolved differently due to
differences in environment and challenges faced. If you look at the global
programming community its diversity is huge. I can't help but find that deeply
inspiring.

------
hirundo
You just reboot the computer. The problem is that when you want to close Vim
on a server and so call the sysop and ask him to reboot, he gets all testy.
Not a team player.

~~~
kemiller2002
I always restart 3 times just like the sysop told me to.

~~~
snazz
It’s best to power off and then quickly flip the on/off switch a bunch of
times. As a bonus, you get to stress-test your power supply!

------
thosakwe
Hot take: Vim should include a simple “Type :qa!<enter> to quit” line in its
startup message. Something makes me think it would clear up a lot of confusion
for first time users.

EDIT: I notice now that it has a “Type :q to exit.” I never noticed that
before, and I use Vim most days, so I can see how others might miss it too.

~~~
lucideer
In this particular SO question, the asker has already read the "Type :q to
exit" message, but it isn't working as they're already in Insert mode.

Really it should be "Type <Esc>:q to exit"

~~~
lixtra
Type <Esc>:qa! to exit

------
Aardwolf
What's all this stuff about colon keys and enter?

Just ZQ (without saving) or ZZ (to save) :)

~~~
benplant
It also requires fewer characters, if you’re playing VimGolf
[https://www.vimgolf.com](https://www.vimgolf.com)

------
vfclists
This means that 1 million developers need to do one or more of the below:

1\. Switch to emacs (plain emacs, roll your own config - not advised)

2\. Switch to emacs and learn adopt evil-mode

3\. Switch to emacs and learn to configure it with use-package

4\. Switch to emacs and install spacemacs, and configure it with step 3

5\. Switch to emacs and install doom-emacs, and configure it with step 3

6\. Take 4 then switch to step 5

7\. Takes step 3, run it side by side with both 4 and 5, then switch wholly to
step 3

1 million developers can have their cake and eat it. Vim, Neovim, VSCode,
Sublime and IntelliJ and all other editors go into a slow death spiral.

5 years on: Emacs gains the abilities of all the other Lisp dialects, becomes
the foundation for the McCarthy Desktop Environment. KDE, Gnome and Co go into
a slow death spiral.

10 years on: Emacs is so advanced that programmers can instruct Emacs via
brainwaves. Keyboards are not necessary.

20 years on: Emacs attains sentience. Emacs morphs into a 3 dimensional human
form bearing an uncanny resemblance to Richard Stallman. Every Emacs user has
their own Richard Stallman look alike at their beck and call.

30 years on: Cyberdyne's Skynet has attained sentience and threatens to
destroy humanity. Emacs and Skynet duke it out.

40 years on: Emacs defeats Skynet. Emacs receives the Congressional Medal of
Honor, The Victoria Cross, becomes a Peer of the Realm, and receives every
award every single country of the world has to offer.

50 years on: Emacs brings peace on earth and goodwill to all men. Every man,
his family and his dog live happily ever after.

60 years on: Emacs defeats both Alien and Predator

70 years on: Emacs colonizes new planets.

80 years on: Emacs attains nirvana and vanishes in an explosion of light.

90 years on: Human beings are back to Vim, Neovim and all those other horrible
editors and desktop environments. The cycle begins anew.

------
ShepherdKing
I really love my vim bindings, I try to use them everywhere possible. So far
that is:

Web browser: Vimium plugin (Chrome)

Music player: Cmus

Terminal multiplexer: Tmux & Screen

Terminal pager: GNU Less

I'm still trying to figure out how best to use vim bindings in my z-shell
(zsh) and ipython interactive sessions.

~~~
kungtotte
For zsh, just enable vi input mode? (bindkey -v in .zshrc) It starts in insert
mode, hit esc to get to normal mode where your typical vi binds work. So
instead of ^a to go to the beginning of the line it's <Esc>0

~~~
ShepherdKing
I think the issue that I had was that my regular bindings in insert mode
(CTRL-a) were disabled while in vi input mode, which caused problems for other
shell programs. Plus, with Tmux and GNU Screen already re-configured with vi
bindings, managing key binding collisions became complicated with vi input
mode enabled. The bigger issue that I tend to have is managing copy-paste
buffers between Screen, Tmux, and Vim.

------
MagicPropmaker
You would think that those zealous power-mods on StackOverflow would have
closed this as "not a programming question"

~~~
nicoburns
I think this question predates that era of stackoverflow. Early stackoverflow
was a lot morw tolerant of these kind of questions.

------
randomsearch
I guess whether vim is poorly designed is up for debate. It’s a power user’s
tool, so maybe you sacrifice intuitive behaviour or an elegant learning curve
for a more powerful tool once you’re familiar with its design.

Less controversial is that any design where vim becomes the default editor,
but the user may not necessarily be familiar with vim, is a bad decision. I
can’t think of a justification for that.

------
Reason077
Here’s the proper fix. In your .bashrc, or wherever:

export EDITOR=< _anything but vim_ >

~~~
Mugwort
Vim works fine. I use EMACS. TextMate, Atom and Sublime are OK. Any mainstream
editor is fine is all but a few corner cases. Truth be told I would be fine
without EMACS but maybe less happy. People unable to exit Vim is just a sign
of a larger problem, that a generation of programmer relies more on Google and
Stack Overflow than simply READING documentation and EXPERIMENTING by writing
short little throw away programs. There is so much Vim material out there on
the internet that it makes me afraid these defective programmers can't even
use Google properly. I still look shit up on the internet all the time but 99%
my answer is right in the documentation. Anyone who can really program is
horrified by idiots who can't shut off Vim or use WordPad to write c programs
and try to compile them.

~~~
koonsolo
> Anyone who can really program is horrified by idiots...

I think you should take a broader look at the world.

> these defective programmers can't even use Google properly.

Try searching "how to exit vim" in google... see what the first result is... .

If everyone around you looks like an idiot, you can probably figure out who
the real idiot is. Or maybe not.

But hey, maybe you're a natural talent who knows by instinct how to exit VIM.

------
dustinmoris
> China, Korea and...

> That might indicate that when developers in these countries enter Vim, they
> usually meant to do so, and they know how to get out of it.

Or it might mean that in China and the Republic of Korea people don't use
StackOverflow as much as people in other countries for whatever reason (they
have their own version, censorship, low page rank in their own search engines,
etc.)

------
MagicPropmaker
It's the same way you exit ed and TECO. Kids today don't know anything.

~~~
hasperdi
but kids these days know other things that you don't. They don't know it
because it is not relevant enough to them and vice versa.

------
brandonmenc
At this point in my life, the only vi command that I _do_ remember is :q!

~~~
PascLeRasc
The only real command I know and use often is gg=G to fix indentation. It's a
lot more reliable than Atom or Sublime's reindent, and this is coming from an
Atom apologist.

------
airstrike
I swap ; and : in my .vimrc and I often get stuck for a moment when in ssh
cause I never remember to hold shift... then I end up entering into the
command line by pressing q: accidentally...

------
kaustyap
Looking at the demographic representation of users worldwide, does it make
sense to deduce that top 5 countries (Ukraine, Turkey, Indonesia, Pakistan,
Vietnam) are ones with emerging software industries with many novice
programmers and the countries at the bottom have well established industry
with experienced programmers?

------
Doctor_Fegg
I always wondered why new MacBook purchasers were bemoaning the absence of the
Esc key, a key I never use. Now I know.

~~~
rdancer
Ctrl-[

------
jrootabega
Did you know vim has an easy mode?

    
    
      vim -y
    

Think you can figure out how to quit vim from easy mode?

    
    
      <C-O>:q!<CR>
    

(from
[https://stackoverflow.com/a/27439752](https://stackoverflow.com/a/27439752))

------
robotcookies
Well now the stats will get distorted as people reading the article check the
question on stackoverflow. That is unless they have another way of gauging
this. If I click that link to the question does that increase the count for
the languages I use?

------
rini17
Maybe it should be more visible in default configuration. Something like the
cheatsheet that is always shown in nano?

When I got stuck every time in neovim's terminal - fixed it by adding the
shortcut into statusline (there was empty space anyway).

------
wslh
This is the kind of myopic discussions that ignore that people are different
and have different tastes. It amplifies the false sense that at the end there
is always the same unique and best choice (for everyone) in a top-10 list.

------
grzm
Discussed at the time (775 points, over 400 comments):

[https://news.ycombinator.com/item?id=14403036](https://news.ycombinator.com/item?id=14403036)

------
pknerd
Only thise morning I was not even able to exit by using _q!_ either. I did
something good in my life or parents that some random keys hitting made me to
exit it.

~~~
BozeWolf
Probably in the wrong (input) mode? Does ctrl-s freeze vim?

~~~
mshook
Ctrl-S doesn't freeze vim, it freezes your terminal output (Ctrl-Q to revert
it).

It's handy when something is dumping tons of stuff in the terminal.

Here's the explanation of where it comes from:
[https://unix.stackexchange.com/questions/137842/what-is-
the-...](https://unix.stackexchange.com/questions/137842/what-is-the-point-of-
ctrl-s?answertab=votes#tab-top)

------
avip
vim is a modern app optimized for max user engagement.

------
tempodox
How the heck is this not covered in CS 101? Or any coder bootcamp? Or Udacity?
At least there has to be a node.js package for this.

------
based2
Save and quit

ESC :x

[https://ss64.com/vi.html](https://ss64.com/vi.html)

~~~
based2
Open @ line: vi +2019 myfile.txt

------
ericfrederich
What about tmux and screen?

------
luizfzs
Just went to the question again. The view count is 1,822,695

------
torgny
Why is this such an issue? It is no harder exiting vim than it is exiting
plain old vi, nvi or any other vi clone. In fact, the very same keystrokes
that you use for exiting vi can be used in vim as well.

~~~
thosakwe
Did you consider the case where the user has never used any vi variant before?

~~~
mario0b1
it's still not much harder. Just press F1, like in most applications or type
"<programname> cheatsheet" into your favorite search engine. Takes less than a
minute to figure it out.

~~~
paublyrne
I assume people type 'quit vim' into their favourite search engine as that's a
shorter search term, and get the SO link. I don't think many people actually
search SO directly.

------
eruci
:q

------
Mugwort
How is this even possible? I used EMACS for years and had no trouble
understanding Vim. Who's hiring these developers who can't even exit Vim? Is
this even a real story or the Onion?!? OK, it's real. I need to go outside and
get some fresh air. This is simply too shocking.

~~~
blensor
And how should someone who has never been exposed to vim know how to use it
without consulting any kind of reference (whether it is SO or any random unix
sysadmin on the street you can hit over the head and drag home to your
workstation)?

