
How Did Vim Become So Popular? - nikolalsvk
https://pragmaticpineapple.com/how-did-vim-become-so-popular/
======
duckfruit
Speaking personally, I've been a professional developer for almost decade and
even in my relatively short career I've seen a lot of technologies come and
go. I was reluctantly roped into it by my first boss, an enthusiastic Vim
advocate. And since, almost nothing else (save for maybe git) beat learning
vim from a return on investment perspective. From the default mac OS
installation to some old Fedora box that has not been patched since the early
2000s, Vim (or its simpler brother Vi) has always been there!

And once I got used to it, I couldn't really imagine using computers any other
way. I'd go so far as to say that the 'home row' concept of vim is the
ergonomic ideal of keyboard based computing, and I now try to mimic that
behavior everywhere -- the vimium extension in chrome, various vim plugins for
vs code and sublime etc. If you're on the fence, I'd urge you to give in!

~~~
licebmi__at__
Definitely, even now as I use emacs, I'm a 100% evil. It's just so natural
(once you get it), that I don't know how other bindings (like ctrl-[whatever])
are prevalent in most other software, it's not like they are more memorable or
intuitive.

Fun story: I was into Free/Libre software as a teen, when I learnt how to move
around in vi(m) and in my first tech gig (as a sysadmin), I was interviewed by
some greybeard who wanted me to do some maintenance and configuration tasks. I
knew the basics of command line environments, but I had never setup LDAP, mail
or DNS. So anyway he asked me to setup some repository on yum, and well, at
least I knew how to do that. When he saw me using vi commands to quickly edit
the file, he stopped the interview, arguing that anybody who was fluent on vi,
was obviously a seasoned admin and I got the postion. I never had the guts to
tell him otherwise.

~~~
Lio
(Funnily enough ctrl-[ is one of my most used shortcuts in vim. It’s a
convenient alternative to escape if you map caps-lock to ctrl)

~~~
slim
You may be using vim wrong. Good for you if you like it that way

~~~
Lio
You're going to have to explain that one because I generally switch back to
command mode after every edit so I use ctrl-[ a lot.

I'd be VERY interested to hear why that's wrong and what you do differently.

~~~
slim
my reasoning was : you could have mapped caps lock to ESC but you did not. So
maybe you are using CTRL too much (CTRL-V maybe?) which is not the best way to
use vim.

~~~
Lio
No your reasoning is way off. I map to ctrl rather than escape because I want
to make use of the Insert and Ex mode ctrl shortcuts.

For example, if I want to insert a register into the ex mode command line I
use ctr-r <register>.

Or if I want to pop out of insert mode for a single command I use ctr-o.

E.g. inserting opening and closing tags when a suitable plugin isn't present.
Insert the opening and closing tag, jump back to command mode with ctrl-o,
move backwards and you're ready to insert more text.

------
saberience
Controversial comment here, but I would say Vim isn't popular at all. I would
say instead, Vim advocates are incredibly vocal (a bit like Vegans and
Crossfitters) and won't hesitate to talk about it at all times.

I've been engineering now since 2002 so approaching 20 years and sure, every
office has one guy who's the "hardcore" Vim guy. Everyone else in the office
uses Visual Studio or VSCode, Atom, Sublime, IntelliJ etc. But the "Vim guy"
is the by far the loudest guy in the room when it comes to discussing his
editor, tries to tell everyone else why their editor sucks, how superior Vim
is, etc etc. Meanwhile all the users of VS and other editors quietly get along
with their work and feel no reason to advocate for their editor like it was a
religion.

At my current company it's the same. We have maybe 300 engineers. 99% of them
use VS or VSCode, there's probably one or two guys using Vim and still telling
everyone else they're dumb for using VS... In 50 years when things have
changed completely, there will probably still be some guys using Vim telling
everyone else they're wrong for using VR Coding with voice recognition (or
whatever is happening in the world of coding then).

~~~
gpmcadam
Did you not read TFA?

~25% of web devs in the SO 2019 survey said they used VIM as their editor.
Amongst dev-ops that number is higher, around 40%.

[https://insights.stackoverflow.com/survey/2019#technology-_-...](https://insights.stackoverflow.com/survey/2019#technology-
_-most-popular-development-environments)

So your anecdotal example of "99% of people using VS or VSCode" doesn't ring
true for the industry as a whole.

~~~
saberience
People could select more than one option in that survey (87,317 responses;
select all that apply). You'll notice that the results add up to more than
100%. Most people who have to remote in to a server will be forced into using
Vim sometimes, which will skew the results. Also, I would say that people who
would respond to a SO survey arent a representative sample of all developers.

I do not use Vim as a daily driver at all, but I have to use it sometimes
because I have no other choice (remoted in to a box). So if I had to say which
editors I used, Vim would be there... sometimes.

------
tenebrisalietum
Disappointed the article went straight from punch cards to video terminals
without mentioning teletypes.

> Having that thing show up on computers in those days was pretty tricky, and
> some considered it a resource hog.

Well in the 60's and 70's, you didn't necessarily even have a display, you
might be using a physical teletype. `ed` is built for that.

Even when you had a display, it could be slow. The VT05 from 1970, only went
up to 2400 baud. And if you were using a modem back then I think you were
definitely most likely connected at 300 baud or below.

~~~
NateEag
Perhaps my favorite video on YouTube is this glorious footage of someone
hooking a 1930s teletype up to a computer running Linux:

[https://m.youtube.com/watch?v=2XLZ4Z8LpEE](https://m.youtube.com/watch?v=2XLZ4Z8LpEE)

Watching it for the first time is what finally made ed click for me.

And yes, I was disappointed that the author clearly didn't understand why ed
has the UI it does. It's about the teletype, not the computational cost of
having a WYSIWIG UI.

~~~
klysm
I desperately want to set up a teletype on my modern desktop - there’s just
something so awesome about electromechanical interfaces with a lot more
mechanical than electro.

~~~
NateEag
Agreed. I have some mechanically-minded young sons who I'm hoping to introduce
to computing by way of a teletype of some sort.

------
ricksharp
Does anyone have a good video comparing vim speed coding vs vscode using built
in editor features?

I’ve been using vscode for years and the YouTube videos that demo vim features
are shallow (like how to enter a blank line - really?). I can do the same
thing I have seen in vim videos without memorizing a bunch of strange key
bindings all while being able to edit code instantly without changing modes.

I would love to see a fair comparison between someone using vim at 100% and
someone using vscode at 100%.

Of course some vscode shortcuts might not be fair (like F12 to jump to
definition, F2 to rename every usage, etc.)

But even in raw editing:

With vscode, I can do multi-line editing, I can navigate quickly, jump to
specific words, etc all very fast.

If there is no video like this, would anyone be interested in a race?

~~~
cat199
copy 10 lines from the current position into buffer q, go to the start of
function jnk, copy 5 lines into buffer w, jump to line 10, paste contents of
q, contents of w, and contents of q sequentially one after the other:

"q10yy /jnk "w5yy 10G "qp "wp "qp

now, go to the start of the document and indent the next 20 lines by 10
spaces:

0G .,+20s:^: :

ok great, now find JUNK and replace 'a1' with 'A1' in the 15 lines that
follow:

/JUNK .,+15s/a1/A1/g

probably not as efficient for multi-file refactoring, but for raw 'drag race'
style text munging, everything is there, loaded in muscle memory, and under
the home row of your keyboard so you don't have to lift your hands at all.

~~~
ricksharp
Ok, also am curious about multi-insertion with cntr-left/right that vscode
does:

For example, let’s say I have a json object with variety of field names, one
per line and I want to remove the quotes.

With vscode, I can alt select all lines, Home Ctrl+right del cntl+right del.

The trick is the field names are different length, does vim have multi-edit
with the ability to navigate relative to each insertion point?

Edit: Here is a good video example
([https://youtu.be/iomWEDMBlcE](https://youtu.be/iomWEDMBlcE))

Can vim do something like that?

~~~
dhmiller
There are things that vim does better. There are things that VS Code does
better. There are things that Visual Studio does better. You can memorize all
sorts of things about your particular editor of choice and you will be more
efficient and effective in that editor.

If I wanted to cherry pick examples of what vim does better, I could start all
of them with, "first ssh into a random server."

What makes vim great is that it has a tremendous number of features and is
available nearly everywhere. Can VS Code do that?

~~~
imtringued
sshing into a server invalidates all the time you spent on customizing your
local vim.

~~~
alwillis
If you’re on your machine, you can do all of your stuff because you can edit
files remotely from within Vim using SSH as the transport:
[http://usevim.com/2012/03/16/editing-remote-
files](http://usevim.com/2012/03/16/editing-remote-files)

If you’re on a new machine, you can grab your dotfile repo from wherever you
keep it—like GitHub for example—and you’ve got your complete config, since
there just text files. Takes 5 minutes.

But even plain vanilla Vim is more than enough for many tasks on a new
Unix/Linux box.

------
norenh
I started using emacs in the early 90s and got really into it during uni,
studying CS a couple of years later. In mid 2000s I ended up in sysadmin work
in a mixed Unix-environment (Tru64, AIX, Solaris, Linux) in a group where all
other used (some Vi(m)-variant). I tried to get work done with emacs but
failed due to various special characters always getting mangled in different
ways over different terminals on different platforms and after a couple of
months I gave in and started using Vim instead. I finally understood that Vim
had two essential properties that other editors lacked in this case.

1) It works well in environments where special characters will get mangled in
various ways over different platforms. As long as ESC works, vim will do the
work just fine. 2) The modes makes it very reliable to use when you have to
make specific operations in exact places in text-files. This alone should make
it the goto editor for sysadmins where you often have to make just a few
character changes to a configuration file and be sure you do not change
anything else.

A third reason when starting the work was also that Vim came by default on all
out platforms so we knew it existed there and it was a nightmare trying to get
approval for extra packages to be installed, but the first two reasons are
what keeps me coming back to Vim whenever I need to do some text-file surgery.

~~~
CalChris
It's nice that ESC works but I also want : ex-mode to work as well. It's why I
continue to use MacVim rather than Visual Studio Code. VSC's vim emulation is
pretty good ... except for ex-mode and I use that a lot. So I go back to
MacVim and stay there.

~~~
greggyb
I've heard good things about a (maybe experimental?) feature to use neovim for
VSC's ex-mode. Have you tried that?

~~~
CalChris
I haven't but I will give that a try. Thanks.

MacVim is a bit clunky but I've gotten used to it. I tried to get
_YouCompleteMe_ to work with it but failed (the plugin interfaces are ...
complicated). I can't get function name syntax highlighting to work to my
satisfaction but still I've stuck with MacVim.

Maybe VimR (gui for neovim) or neovim + VSC will work. \--- This works-ish.
_:s /this/that/_ works but _g /hello/p_ doesn't. But maybe it can. I'll
investigate.

------
halotrope
For me it is being able to efficiently navigate a file without leaving the
home row (Gotta learn touch typing first). Once you understand the commands
follow a composable grammar it is really like a superpower for dancing around
text.

„Go down 5 lines, move right two word, replace the contents of the brackets“.
I don‘t use the actual editor all that often but have vim mode enabled in all
my „real“ editors like VSCode or JetBrains Suite. I am often wondering how
people do edit source efficiently without vim mode but I am too shy to ask.

~~~
gt2
Long time vim lover here as well, but I guess I hear often that for a lot of
folks, input isn't the bottleneck.

~~~
dbtc
I've been using vim for about 7 years and for me it's not so much about the
efficiency as it is the pleasure of commanding (programming!) a powerful,
wellmade tool.

~~~
40four
This is the same for me, I very recently got over the hump, and finally am a
proficient Vim-er! I never cared as much about the efficiency.

Not talked about enough, is the fact that Vim is simply _fun_. I simply enjoy
typing with it. You’re right, it really is a pleasure, and it makes you think
about programming differently.

It stimulates a part of my brain regular editors never did. It’s exciting to
think about the best way to perform a series of actions, or learn a new
command. Or brew up a quick macro to do something wild, no other editor could
dream of!

------
rob74
I think it's a bit sad that the article completely fails to mention that Bram
Moolenaar originally implemented vim on the Amiga. Actually this might have
contributed to its popularity: back in 1991, Amigas were much more widespread
than Unix boxes, and around the time Commodore went bust and the Amiga was no
more, i imagine lots of developers migrated to then-new Linux rather than to
the despised DOS/Windows, and took their preference for vim with them.

~~~
kristopolous
I was reminded that Amiga was bought by Gateway which sounds crazy but it was
1999, that was wackyland times

------
6502nerdface
I think vim became so popular because its only real competitor is Generally
Not Used Except by Middle Aged Computer Scientists. ;)

------
jiggawatts
I know I'm going against the popular opinion here, but I have never observed
anyone using either Vim or Emacs to outperform a _competent_ IDE user,
especially Visual Studio or IntelliJ.

I mean sure, if you think IDEs are just slow, expensive text editors with
fewer keyboard shortcuts, then you'll be disappointed, but features like
"navigate to any symbol by prefix", "find all usages", and "Ctrl-click to
navigate to definition" have no comparable analogue in traditional text-
focused, non-IDE editors.

Not to mention visual debuggers, not to mention _remote debugging!_ The VS
IntelliTrace feature alone is worth the cost of the entire IDE.

Visual Studio Live Share lets two people concurrently use the entire IDE _at
the same time_ , remotely: [https://visualstudio.microsoft.com/services/live-
share/](https://visualstudio.microsoft.com/services/live-share/)

There's just nothing like any of this in Vim or Emacs.

I mean sure, if you futz around with plugins, you _might_ be able to reproduce
some small subset of these features, but then you'd have wasted more of your
time tinkering with the editor than actually getting work done.

What I've noticed with a lot of tools that trace their origins to the UNIX
world is the _perception_ of speed. Typing many keys rapidly to trigger
shortcuts _feels_ like you're doing things faster than moving a mouse cursor
and then clicking something, because there are _more actions per second_.
However, objective tests show that even highly skilled users aren't as fast at
completing high-level tasks as mouse-users.

One study that shocked me compared wall-clock development times for a
moderately complex puzzle problem. It was designed so that most people would
have to debug the program at least once or twice. Participants could use any
development environment and language. Among the fastest solutions were users
programming in F# and C# using Visual Studio, at roughly 30 minutes for F# and
60 minutes for C#. People programming in languages like C, C++, and Java in
typical Vim/Emacs environments took days or _weeks_ to solve the same problem!
Days!

I've observed this effect with "command line jockeys" too, where they're
_absolutely convinced_ that bash is some power tool that nothing can hold a
candle to, and then they take hours to solve some problem that's three clicks
away in the GUI.

~~~
deivid
I think this really depends on what you work on.

> Not to mention visual debuggers, not to mention remote debugging! The VS
> IntelliTrace feature alone is worth the cost of the entire IDE.

I use gdb and pudb, which are both CLI based, and have done so for years

> Visual Studio Live Share lets two people concurrently use the entire IDE at
> the same time, remotely: [https://visualstudio.microsoft.com/services/live-
> share/](https://visualstudio.microsoft.com/services/live-share/)

Tmux has let me do this for over 10 years

There are things I do not do in vim, but they are few. For example, I've
developed a few Android applications as a side project and I used netbeans for
it. For rust, go, c, python, I've always used vim.

~~~
stnmtn
> Tmux has let me do this for over 10 years

Of course, but is it as easy as two clicks in VSCode? There's so much setup to
get it exactly the way you want in the terminal, where as it "just werkz" out
of the box for VSCode. I'm a VIM user, but i use vim plugins inside of IDEs
for this reason

------
VectorLock
Ever year or so I look at the nice sugar that things like VScode or other IDEs
have and think "it has vim mode, those nice things would be good to have" \-
autocomplete, things like that. So I try the IDE and I get so tired of _in the
way_ it gets that I just go back to vanilla Vim.

Then I think "maybe I'll try these IDE like plugins for Vim" and get so
frustrated by the Vim plugin system that its back to vanilla Vim pretty
quickly.

~~~
axiom92
I was wondering what language do you code in? I am a proficient Vim user but
the more I use VScode for writing Python code, the harder it gets for me to
justify using Vim for serious development.

~~~
colordrops
If you use the right plugins + lsp, there's nothing you can do in vscode that
you can't do in vim. Just requires a lot more upfront work, but you can check
the config into a git repo.

~~~
reidrac
The problem is finding the right plugins, but it doesn't require that much
time (at least in Linux/Mac; Windows may be a different experience).

I use "IDE features" when writing Scala: vim-plug first, then vim-lsc +
metals. The configuration of lsc is trivial (as in you can copy an example of
less than 10 lines).

After using this for a while, I replicated the same experience in Python with
python-language-server (I install it with pip --user), and it was matter of 5
minutes to setup. Before this I was using syntastic + ctags, and that required
much more work.

May be is more work than getting the same functionality in VSCode, but it
doesn't look a lot of work to me.

------
oska
Regarding the picture of the woman standing next to the pile of punch-cards
which is, annoyingly, uncredited, I have found it credited in this article [1]
as:

> Programmer standing next to the SAGE computer's control program

> Image courtesy the Computer History Museum and the MITRE Corporation

[1] [https://kiranbot.com/post/2016-07-27-punch-
cards/](https://kiranbot.com/post/2016-07-27-punch-cards/)

~~~
notacoward
I really need to show that picture to my in-laws. They met while working at
MITRE during that era, and there's an excellent chance they knew that woman.

~~~
oska
Cool. Maybe come back and tell us her name, if they know it.

------
mtippett
We also need to understand that a subset of vi features is part of the POSIX
standard, so any POSIX system will need to have "vi". vim is the logical
choice there.

So as a result vim has become the reference implementation for the POSIX vi
featureset.

~~~
catalogia
All of vi is specified by POSIX, but vi is only a subset of vim.

~~~
moonchild
Right, but vim is a popular, easy-to-package implementation of vi.

~~~
smhenderson
Agreed and if you somehow really need strict POSIX compatibility than Vim’s
compat settings make it behave almost 100% like traditional vi.

------
stephc_int13
In my opinion, the best feature of Vi(m) is its ubiquity.

Also, it is fast and reliable.

That said, I never bothered learning many commands, only the very basic ones,
I spend much more time thinking than typing anyway and I always felt the
productivity gains to be marginal.

~~~
lordleft
If you're on a linux server, it almost always has vi(m). It's worth learning
for that reason alone :)

------
bsdz
Something I've come to rediscover is how good vi/vim is on a slow network
connection. Our sharp networking team route me from London to Sydney so I can
remote back to my London PC.

Seeing what you type several seconds after you typed it is reminiscent of the
90s and dial up connections.

Having familiar vi keybindings in so many applications these days has been a
productivity saver.

~~~
microtherion
One editor which used to be great at this is sam, which was explicitly
designed to work across slow links, by being split into a frontend running
locally, and a backend being run on the target host:
[http://sam.cat-v.org](http://sam.cat-v.org)

~~~
earthscienceman
An alternative to that is to run mosh and it will make assumptions about where
the characters should be going.

~~~
shmoogy
Mosh is so good if you commute and work via LTE

------
jjice
I've been using Vim more and more in the past few months, but I still use VS
Code primarily for a lot of my work. At work, I do a lot of Node/TS stuff, so
VS Code just offers a whole wealth of tools that I'm already familiar with.
I'm sure I could pimp out Vim to do it just as well, if not better, but I
still enjoy VS Code.

Where Vim shines for me is for creating and editing small files. I use vim for
my journal, quick edits, and data wrangling when I need to get something into
a nicer form (most often scraping links to pipe somewhere else). It's a great
interface for editing temporary data.

Also, knowing Vim if you ever need to SSH into a remote machine is a must in
my eyes. Nano feels sluggish once you get a feel for Vim, and, as the article
mentions, you can fine Vim almost everywhere you go.

~~~
hannofcart
VSCode is very customisable. So you can make it behave exactly like your vim
(+plugins) setup behaves.

~~~
RMPR
Not quite, or maybe I'm the one not doing things the right way, when I tried
to make VsCode behave like Spacemacs there was always these annoying things
where you'll have the feeling that you're better off using the mouse: for
example when you're editing, you can't close the sidebar without focusing it
and firing Ctrl+E, I eventually discovered an emulation made by a bunch of
people[0], it was great, but for things like Git, I still needed the mouse
whereas in Spacemacs you can use the excellent Magit which is entirely
keyboard focused.

1:
[https://github.com/VSpaceCode/VSpaceCode](https://github.com/VSpaceCode/VSpaceCode)

------
pmontra
I started using vi in 1986, switched to vim and (mainly) emacs in the 90s. My
setup now is emacs for local editing, vim for sudo vi system.config.files and
when I ssh to a server.

Actually vim had a larger share of users back then because there were not many
other editors for UNIX and Linux. There are probably more vim users now but
even on Linux I see many more people using VS Code. The problem they have is
editing files when they ssh into a server. I usually suggest nano. Not many of
them notice and understand the two lines menu at the bottom of the screen.

------
aarong11
Because nobody knows how to quit

~~~
ricksharp
My first few times in linux after trying to read a file:

Ctrl+C esc esc Ctrl+c Ctrl+q

What is this! What is going on!?!

15 minutes of searching on my phone later, q...

~~~
RMPR
FWIW if you press Ctrl+C two times Vim will show you this nice message :p

    
    
        Type  :qa  and press <Enter> to exit Vim

------
kevarh
Vi (and ed) are the only text editors required to be included in the POSIX
spec. A base Unix (and most Linux) installs will have some version of vi or
vim installed by default.

If I'm working on someone else's box this pretty much guarantees I can edit
files with my basic vi knowledge without having to install a different editor.

~~~
jcfields
That's why I learned vi initially years ago, because I was told it was the
only editor that would always be available anywhere you went. I only ever use
it in ssh sessions these days, but I still feel like learning how to use it
has paid off many times.

I was playing with Haiku recently and was surprised that vi or vim wasn't
included in its base install. Granted, Haiku (like BeOS before it) doesn't
ever claim to be a Unix-like or POSIX-compliant system, but I found the CLI
environment to be very Unix-like overall. I guess it's a testament to the
ubiquity of vi that it never occurred to me that it wouldn't be there. (If
anyone's curious, emacs is also absent but nano is there.)

~~~
waddlesplash
Haiku does actually claim to be POSIX compliant generally, and is certainly
UNIX-like. We don't include "vi" in the base install, though.

------
diegs
i tried to switch to emacs+evil, but i can't bring myself to do it. partly
because I'd have to invest a lot of time in getting an equivalently productive
environment, but partly because of the following

1\. vi is everywhere, and...

2\. vi with no plugins is still super powerful, which is helpful on random
hosts / coworker's machines / basically anywhere, and...

3\. since vi is still so powerful out of the box, i only need a few
lightweight plugins to close the loop and make the most powerful editor i can
imagine needing. 99% of my plugin usage is fzf and ale w/lsp, which are
arguably two very powerful plugins, but the cognitive overhead is very low,
and at least among peers my editor doesn't seem to be slowing me down at all

i would also pose the controversial opinion/hot take that using a less
"powerful" (non-IDE) editor helps you write better code. humans can only fit
so much into their working memory at a time. vim doesn't really let me do
crazy refactors or jump through endless chains of class hierarchies (well,
with lsp it can, but...). compared to my eclipse/intellij days (and codebases
worked on by other people using those tools) i am forced to tame complexity by
defining good module boundaries and abstraction barriers.

~~~
RMPR
>99% of my plugin usage is fzf

Even that can be handled by Vim ootb, just add

    
    
       path+=** 
    

to your vimrc and you're set, you can recursively :find pretty much anything
in the folder where you opened Vim and you can even go fuzzy, for how it works
in practice:
[https://youtu.be/XA2WjJbmmoM?t=493](https://youtu.be/XA2WjJbmmoM?t=493)

------
Koshkin
Everything I need to know about vi is contained in the following two quotes
from Bill Joy, its creator:

 _... vi was written for a world that doesn 't exist anymore._

 _... programmability and the modelessness. Those are two ideas which never
occurred to me._

~~~
teruakohatu
Given that vim has never been more popular, I think those quotes are of
historical interest only.

------
ulisesrmzroche
I’ve been using Vim professionally for like ten years now and I can’t tell you
what benefits do I get out it exactly. I still use a mouse and I don’t see
what’s so bad about it.the whole home row argument has never been convincing.

~~~
pengaru
This is like someone saying they've used a DSLR professionally for a decade
and couldn't say what benefits they get out of it over a point and shoot
because they've never done anything other than leave it in automatic mode.

You owe it to yourself to explore and embrace the power of your tools as a
professional.

Vi(m) in particular requires a deliberate effort from the user to learn its
features, because of how it stays out of the way by design. It's not trying to
be discoverable at the expense of experienced users.

Decades ago I tutored someone taking a C++ course who claimed to know vi and
insisted on using it for the sessions. They knew how to use vi enough to be a
notepad replacement, it was brutal to watch how much time they wasted
neglecting to use _any_ of vi's features at their fingertips. If you're
navigating with a mouse or arrow keys, and treating vi as no more capable than
notepad, you're not really using vi.

~~~
ulisesrmzroche
I’m pretty good at using vim, There’s really nothing I don’t know, and I’ve
watched tons of courses and read tons of tutorials. I got my own vimrc like
plenty of people. But People still use macvim, and hit Apple S, and Use the
mouse, I’m hardly the only one. See Yehudas “everyone who tried to teach me to
use vim was wrong”

When I was younger I cared more about it, but it’s all just yak shaving.

What there isn’t are obvious benefits to keeping your fingers in the home row,
just vastly overhyped anecdotes.

By the way expert photographers will tell you that it’s not about the tools
and that today’s phones are good enough.

That’s one of the things that are annoying, I’m the dumb one for putting a
dissenting opinion, but no one is willing to explain why using the mouse is
worse, and definitely not in a way that satisfies me

~~~
aspaceman
Hey just wanna let you know that I'm a fellow Vim user that uses the mouse for
practically everything. I like using Vim for editing, but my brain still likes
to do the "context switch" where I dig into menus and such.

~~~
ulisesrmzroche
That’s good to hear. Everyone’s pretending like any criticism of vim is
obviously coming from incompetence.

------
amelius
> What I am trying to say that vim is an effort of over half a century of good
> idea accumulation, putting lots of effort into being backward compatible.

I wonder what Vi(m) would be like if it were redesigned from scratch.

~~~
smabie
Probably something like spacemacs.

~~~
smitty1e
Emacs + vim really are the peanut butter and chocolate of getting stuff done.

~~~
smabie
I really want to give spacemacs a try, but unfortunately I've just been using
traditional emacs for far too long. vi does seem to have a much better editing
model than emacs. The tools Emacs has for buffer navigation and editing have
always struct me as incredibly primitive.

~~~
taude
I've recently blown away my several years old custom Emacs config and started
over with vanilla Doom Emacs (it's supposedly a faster version of Spacemacs,
but I don't really know, I just took a stab and grabbed one of them). I spent
a weekend doing some VIM tutorials and writing down common key strokes of
things I do all the time, and then on a Monday, it was all VIM navigation. A
lot of your regular Emacs meta-stuff will still work, and for that, you can
slowly start replacing with the spacebar-b key stroke for your buffer
management, spacebar-p for projectile, etc....

Here's a couple of the videos I watched:

1)
[https://www.youtube.com/watch?v=dr_iBj91eeI](https://www.youtube.com/watch?v=dr_iBj91eeI)

2) I've only watched a couple of these for the topics I'm interested:
[https://www.youtube.com/watch?v=rCMh7srOqvw&list=PLhXZp00uXB...](https://www.youtube.com/watch?v=rCMh7srOqvw&list=PLhXZp00uXBk4np17N39WvB80zgxlZfVwj)

3) for common VIM, I went with this: [https://thoughtbot.com/upcase/onramp-to-
vim](https://thoughtbot.com/upcase/onramp-to-vim)

4) Recently, I found this guys short six-part series that gets you navigating
around VIM fast, but he's an acquired taste:
[https://www.youtube.com/watch?v=H3o4l4GVLW0&list=PLm323Lc7iS...](https://www.youtube.com/watch?v=H3o4l4GVLW0&list=PLm323Lc7iSW_wuxqmKx_xxNtJC_hJbQ7R)

There's still some things I like better about Emacs navigation and there's a
lot I like about VIM navigation. I prefer Emacs crtl-a and ctrl-e for
navigating to front and end of the line (instead of $ and ^, which is an
awkward shift+number key on my keyboard). However, in Doom Emacs (likely
Spacemacs too since I believe they both support Evil-mod) if you're in Insert
Mode, most of your old Emacs navigation will still work, so this makes it a
decent crutch for transitioning.

------
okasaki
Probably because it was the default editor in a bunch of Linux distributions.

~~~
luxurytent
Isn't Pico the usual default?

~~~
wadkar
I have seen nano to be the default for most debian and fedora derived
distributions from early 2000s. Not sure if things changed in late teens. Or
maybe I am misremembering things.

~~~
luxurytent
I always confuse pico and nano, tbh.

------
stevens32
I knew vim was old, but had no idea the lineage traced back 50 years. Vim has
always felt like an exoskeleton suit compared to the spaceship dashboard of
full-fledged IDEs. You can also add plugins to gain most of the functionality
of an IDE.

It does have a blood price, some days I spend just as much time hacking on my
vimrc/plugins as the actual code I opened vim for.

------
Spooky23
Back in ye olden tymes, you could count on some variant of it being
everywhere. It’s lightweight, ubiquitous, and powerful. It’s way more powerful
than default Windows tools.

There’s a steep curve, but if you can handle it and learn a couple of things
(%s//g) being one of them, you’ll get people hooked. Then the olds shame the
young staff to use it.

The muscle memory aspect is significant too. I’m a suit now, but can still
work magic with Vi years later. The faculty at my college pushed emacs hard,
but customizations are missing on foreign machines, and the key combos were
too awkward on normal keyboards (for me) and the skills wore off.

~~~
erklik
> Back in ye olden tymes

Not just olden times. It is easily found on literally any Linux or Mac system.

------
dleslie
I used Vi, and then Vim, for a good 15y before I switched to Emacs. I made the
switch because I had heard that Emacs let you manipulate your buffers with
lisp as one would any other data in a programming language. I find I only
really do that when using Org Mode or REST mode, but I'm still glad that I
made the switch. The editor is ... mine. Mine in a way that a professional's
tool should be an extension of themself.

I've been thinking of trying evil, but I don't really miss the modal editing
as much as I thought I would, and it's been another five to ten years.

~~~
reactchain
> The editor is ... mine

One of the things I like most about vim is that you can use it on just about
any remote machine, and even if you don't have your own vimrc the default
editor is still really powerful.

~~~
dleslie
Tramp mode lets me do that with Emacs, and I get to keep my custom
environment.

------
murat131
Over the years I've used a lot of editors on unix shell; ed, jed, joe, pico,
nano, emacs, vi(m) and I think vim is the best editor on shell for its
performance, speed, and mobility. It's a rational choice for SRE/DevOps type
engineers. I still sometimes use nano for very quick edits especially when
having no physical Esc button frustrates me. However if mobility is not a
concern, in other words if I'm editing files on my own environment (say my
mac), I'm running Emacs.

~~~
RMPR
>especially when having no physical Esc button frustrates me

It's not uncommon in the Vim world to remap Esc to CapsLock

------
rgrau
Why is vim so addictive, and somehow it's difficult to explain to non vim
fanatics? I think it's a reification of the process of walking through a text
file and doing stuff to it. A concrete way to talk about processes onto text
files. Some feel it is strictly superior to GUIs because you can get ahold of
it. you can write it down, put it in a postcard, and you have a handle to it.
You type it again and it works. there's no syntax or fuzziness or stuff that
can go wrong (TM).

Next question: Can you ahold an algorithm in your head? in the same concrete
way you hold 'yypVr-'?

I'm lately quite interested in Array Languages and I'm reading some snippets
of Apl/J/K. And the feeling is the same. Everything else looks so wasteful and
error prone like the point-and-click looks to vimmers.

Example: Shuffling a vector – breaking ⍵ down into ⍺ pieces from which another
vector is built by merging. E.g. if is 'abcdefghij' and is 3, the pieces are
'abcd', 'efg', and 'hij', and the result is 'aehbficgjd':

⍵[⍋⍋(⍴⍵)⍴⍳⍺]

The ergonomics are pretty different from what we're used to, but there's
definitely an emergent property there. It's not just "it's shorter to type".

PS: I'm an emacs user (evil)

------
codezero
I know how I first encountered vi... it was probably 1994 or 1995... (Wiki
looks like maybe 1994 was first intel release, so that tracks) - and I had
only used Linux up to that point and had never really used an editor other
than pico (now nano, which was the editor for the pine email client!).

I thought playing with Solaris would be "cool" so I installed it and couldn't
get it on my network because I needed to edit the /etc/resolv.conf to add host
resolution, but there was no pico editor!

I ended up digging into manual pages to figure out how to use vim, and over
the course of getting the system set up I got pretty comfortable with a lot of
the patterns vim let me make faster, they are mostly things I might run in a
shell like grep or awk, but I can do it without shelling out, so that was a
bonus.

edited: now that I think of it, I bet I was not using vim, just vi - so the
relevance to this article might not be quite on.

------
slim
real answer : because redhat and debian had replaced elvis with vim as the
default vi early on. I don't remember the exact drama, but maybe something to
do with the license.

~~~
enriquto
elvis was great! The simple monocrhome color schemes were beautiful, and it
had a snappiness (even on a 486 back then) that I'm still missing nowadays.

------
durandal1
I've been a vim user for almost two decades, but recently my usage has
increased dramatically due to the proliferation of high quality LSP servers
that plug in through CoC.nvim. It really has removed all the maintenance
hassle of keeping your language environments up to date.

------
vowelless
Vim (bindings/modality - ESC mapped to CAPS) are good for my hands. I don’t
get tired. Before vim my hands would get tired after some time. Now it feels
like I can keep going forever.

Now I use vim for everything and it’s bindings in my browser, email client,
todo list app, etc.

------
thevagrant
I started using Vim about 10 years ago. I wanted an editor to force me to use
the keyboard in a different way as I suspected it would ease my RSI.

After using Vim as my main editor, my RSI went away.

These days I've gone back to an IDE but I still use Vim for single file
editing.

------
pphysch
It was there, and it was (and still is) good enough.

------
JJMcJ
Comes with every *nix distribution.

Fast to start. I use Emacs for programming but if I have one single file, like
a config file, that needs a quick edit, use vi(m) because otherwise I have to
either:

1\. Go to my open Emacs and navigate to the location of the file needing the
quick edit 2\. Open a second Emacs instance, and hope I don't lose the desktop
settings for the "real" instance.

Especially if the file needs to be edited sudo.

If there is a way to open a file in the existing Emacs instance without
navigating, I would be glad to use it except for sudo.

The way that "firefox some-local-file.html" will open up that file in the
existing Firefox instance.

~~~
b5n
I'm confused by your workflow. Why are you opening a second Emacs instance?

In Emacs you just C-x C-f /path/to/config, for sudo C-x C-f
/sudo::/path/to/config.

Starting location will be home, or the parent of the active file (if the
active buffer is an editor).

~~~
dnquark
tl;dr: terminal -> vim == less context switching

Even though I live in Emacs, I frequently use GP's workflow as well. For me,
it's often the fact that I am already working in the terminal when I need to
edit the config, so going to Emacs is a context switch. Moreover, I often fist
do a cd /path/to/config; once there it's trivial to do vim foo or sudo vim
foo.

I have an alias that can send that file to emacsclient -- but again, it takes
me away from the terminal, and will not work with sudo.

Also, I've tried possibly every emacs package that helps with path completion,
but they all seem to get in the way when I already know exactly what I want.
Vanilla bash completion (and don't forget about fzf!!) are a better experience
for me; YMMV.

~~~
b5n
That makes sense, if I'm in a terminal I'll just use vim, although I do get a
lot of use out of eshell.

------
ecopoesis
I was an emacs user until I had a summer internship where I had to constantly
rebuild SunOS and Solaris boxes. No emacs in the default install and no
working networking. But vi was there and it became my default everywhere.

~~~
wyclif
Almost the same here, except I skipped the emacs part and went straight to vi
because I was working with Sun hardware.

------
spicyramen
Have been using vim for over 15 years and just a handful of commands have been
enough for my needs. Insert Set paste Save Quit Search Undo I know there are
plenty more but for me is more than enough

------
bashinator
No other text editor has so much in common with playing a musical instrument.
Everything you do eventually becomes muscle memory; an expression of grammar
rather than the execution of a procedure.

------
lmiller1990
Input is not the bottleneck. I don't have a good reason why, but I love
editing text with Vim.

I enjoy learning complex tools. Maybe that's why. I am also a JS developer, I
guess it all makes sense now.

~~~
Random_ernest
To me it's not about input being the bottleneck, but about Vim having a
modular grammar, such that my brain can stay in "problem space" instead of
"how do I edit the file space".

It allows me to have a deeper level of focus.

------
nice_byte
vim has stolen years of productivity from me. i've listened to loudmouthed vim
advocates, tweaked my editor settings, played with plugins. but the problems
that i needed to solve - code navigation, autocomplete, debugging - were all
easily solved by switching to visual studio. nowadays i use vs with the vsvim
extension (years of vim trauma have burned the key bindings into my muscle
memory) and am much more productive with that setup than with the janky vim
config from my uni days.

------
raxxorrax
Perhaps a mix of choice supportive bias after going through the pain of
learning it and stockholm syndrome?

Jokes aside, I don't really work with VIM but understand the concepts and have
mastered basic usage of changing text files without too much effort. Never
really coded in VIM aside from small scripts. But it is a dependable text
editor that survived the ages. Most modern IDE will never reach this because
they are far less dependable and far less wide spread. Installing VIM on your
system never hurts.

~~~
skohan
Yeah I think ubiquity is a huge part of it. I think I'm at a similar level as
you: I mostly use it for quick edits or when using ssh for example, but the
fact that I know I will basically always have access to it makes it a good
default choice.

------
tarkin2
Because modal editing is really, really fast? And if you edit a lot of code
that’s really important?

I’ve used vim for ten years. I’ve always found the extensions to vim cludgy
after a while. And I’ve happily hopped on to the sublime and vs code
bandwagons because of easily extensible editors and nicer UIs.

But the first thing I do with this easily extensible editors is look for the
vim plugin. Modal editing is the reason people love vim and if you don’t “get
it” vim seems like a contraption only a sadist would love.

------
linuxdaemon
Every time I tried a new IDE I always looked for the setting or plugin that
makes it work like VI. I eventually decided instead of making my IDE like VI
I'd use vim plugins and make it my IDE.

I think this was the page that started me down that path:
[https://realpython.com/vim-and-python-a-match-made-in-
heaven...](https://realpython.com/vim-and-python-a-match-made-in-heaven/)

~~~
dalfonso
I haven't found a way to test/debug in Vim that's as good as PyCharm. With
PyCharm, after I write a test I hit ctrl+shift+r and it runs. I've been
meaning to try pudb, seems like it's the most similar in terms of a visual
debugger.

------
gpmcadam
As a meta-comment, I'm always so surprised at how many people see an article
title ending with a question mark and come straight to the comments to chime
in with _their_ answer, without seemingly reading the article, which itself is
a view on the answer to the question.

Do people perhaps mistake these types of titles as "Ask HN..." type threads?

------
Timpy
At the interview for the position I'm in currently, the senior programmer I
was interviewing with didn't pay much attention to my resume. He mentioned
that he saw my .vimrc on Github though, and we chatted about that and other
linux things. I think it was just a small connection in a big scheme of
things, but it helped.

------
Nginx487
Remembering days when I was a sysadmin, vim or even old-school vi was the
default editor on literally every POSIX/UNIX system, and I had to deal with
quite a variety of them - BSD family, Solaris (still Sun), AIX - some of them
still not connected to the internet! Having advanced vi skills appeared handy
in my situation

------
enahs-sf
Vim serves a very specific niche. Want to edit files on a remote server? This
is the default option. Need to open a massive text file? Vim has got you where
sublime, vscode fail.

I switched from emacs after college and haven’t looked back. Plus everyone
constantly ridiculed me for using it.

------
aronpye
Because one does not simply exit VIM.

------
vmchale
> But what kept Vim in the loop is the compatibility with almost everything
> you can think about. Wherever you SSH today, you can start the Vim session,
> or at least Vi session.

Also the fact that it works over ssh. Emacs does too I think, but e.g. JQt and
DrRacket do not!

------
longtimegoogler
I don't get vim. I use emacs primarily and I know to get around in vim but
I've tried several times to see what the fuss is all about. Modal editing just
doesn't work for me. It seems like a must to remap the escape key at the very
least.

------
NomDePlum
I'd classify vi (and vim) as originally being ubiquitous not necessarily
popular. They have been a necessary part of my career since the start. I'd
assume that is true of a lot of people here.

------
ausjke
over two decades I used emacs, eclipse, geany, nano, even jetbrains whole
bundle purchase plus a few other IDEs, I always return back to vim, recent
years I have settle down on vim for good with a full IDE in terminal, I have
code auto completion, syntax highlighting, snippets, linter, auto fixers,
debugger for all the languages I care, it's just so beautiful and productive
as well as powerful and lightweight, can't live without it.

------
julianeon
Because people work with virtual servers a lot these days and vim is the
easiest editor to throw on there and use without changing the defaults, is my
answer.

------
emerged
I was hoping some of you would give good reasons not to use it. But now I have
to go dedicate time to become fluent since it is clearly worth it.

------
pugworthy
One little truth of VIM if you're a keyboard fan: you can do a TON of things
with a 60% keyboard. No arrow keys? No problem.

------
jdlyga
There used to be a lot more parity between Vim and Emacs. But nowadays, it's
swung a lot further towards Vim. Any ideas why?

~~~
pvg
I think a significant factor is that Vim is a better managed and maintained
project. Emacs's difficulties in this regard are decades-long and songs are
sung about them.

------
ulisesrmzroche
If vim came out today, it wouldn’t be popular. eMacs maybe, with a pretty
theme, but vim is vastly overhyped.

~~~
gpmcadam
Tools like VimR and Onivim suggest that this hypothesis might not be true.

[https://www.onivim.io/](https://www.onivim.io/)

~~~
ulisesrmzroche
That’s got 4K stars. I wouldn’t say it’s popular.

------
scotty79
I grew up with norton commander so when on linux I'm taking mcedit over vim
any day. :-)

------
ryanmccullagh
Shift+V is something modern editors still don’t get right.

This is my favorite and most useful Vim command.

------
cutler
Wow, haven't had as much fun since the Emacs vs Vim wars on Slashdot in the
00s.

------
phendrenad2
System administrators started using it because it's one of the best non-GUI
editors (along with emacs), so it had this mystique around it. Those who knew
VIM/emacs were surely hackers! And so programmers picked up on that and using
VIM/emacs is a sign that you're cool.

------
tingletech
in TRS-80 BASIC, you could go `EDIT 100` and bring up a line 100 in a line
editor, vi sort of reminded me of that when I was learning it something like
25 years ago. It is still my main code editor.

~~~
steveeq1
25 years ago was 1995

~~~
tingletech
yea, I started learning vi around 1993, but didn't really get good at it till
1995.

------
ggm
Distressingly little comment on mode/modeless difference. There are reasons
people want to be in a modeless editor, and there are reasons people want a
distinction between insert mode and other modes. The primary drive for vi and
emacs was the emergence of full screen editing? Sure. That was true, I lived
across this window.

But.. it was possible to choose to get a 'page' worth of view of your teco or
ed or SOS edit session, and return to a sense of being mid-page, if you
wanted. It took some finicky commands but once you decided you needed a screen
of context there was a way to do it, and not lose your point in a line.
(certainly, not lose the line you are "on")

For a DECwriter, this made very little sense to use frequently. It was best
not to have to force it to print a lot of paper. For a slow ADM3/5 or VT100 it
made some sense, because the repaint speed was a major pain.

Once you had sufficient responsiveness (2400? I would say that was about it.
4800-> was a no-brainer) then the repaint delay was low enough it was worth
the investment.

There was another universe: Half-duplex. We just pretended it didn't exist,
and that local mode entry didn't exist and designed systems not to even think
about it. Odd, when you think that X10 was primarily about converting from
server side to client side burden, which _is_ local mode.

(server/client being reversed concepts in X10/X11 its confusing to talk about
this, local being the key point)

I think vi took off, because a substantial proportion of the world did not
want to think programmatically in LISP and wanted the reassurance of a moded
editor, to do things. Emacs took off for people who wanted to hack the editor,
more than the limited vi macro facility, and who wanted to be "in" the editor
all the time. VI users wanted to distinguish being "in" the body of text/code
and being in 'move around, and think about it' states of mind.

Had I turned left in 1979, I would have walked into a teco training room, and
naturally been Emacs ever since. I walked right into a TOPS-10 SOS world, and
emerged through PIP into ed and then ex/vi and then vim in the late 201x era.
I personally preferred Keith Bostic nvi for a long time, and I still miss some
of its innate simplicity. I was a late arrival in colourised editors. (this is
not an analogy btw: it was literally random choice which room of two you went
into in the first Year CS degree training for computing. We all used punched
cards before this, and it was a DECwriter lab with very preciously guarded
pre-ANSI terminals, too few to go around. Some of the DECwriters were
converted to greek for APL, and we had a tectronix vector display which could
be used as a text display device too, if you could stand the burn-in)

What often gets missed, is MIT, X and the emergence of EMACS key bindings as
the go-to for line edit in the web. This and bash, had huge influence

So we now have a world of VIM users using classic VI bindings in editor, but
using EMACS to do all line edit on the shell an d in the omnibox, all because
of MIT and the X windows system and how that influenced graphical display
norms when the first browsers emerged.

------
RoutinePlayer
Doing vi(m) is an honor badge showing you know a bit of Unix.

------
orzi
Because noobs can't install anything and set $EDITOR ;)

------
ur-whale
To me at least, the answer is and always has been: speed.

~~~
Bang2Bay
capability as well. In which other editor (other than vi/vim series) can you
find and replace a string in a particular range of lines, and go to the 3rd
occurrence of a letter in a line and so on!

------
tobyhinloopen
I still believe people use VIm because it looks cool.

------
thrownaway954
Has anyone put together a interactive VIM tutorial?

~~~
door99
:vimtutor

------
rxsel
What's the ROI on learning Vim? Anyone?

------
namuol
Could it be Stockholm Syndrome? It was for me.

------
liquid153
Because it’s not emacs

------
wangvnn
same reason that makes notepad, internet explorer popular

