
A pragmatic decision on GNU Emacs versus Vim for programming - zeveb
https://utcc.utoronto.ca/~cks/space/blog/programming/CodeEditingVimVsEmacs
======
chousuke
I'm pretty happy with neovim nowadays... With Neomake, I get enough "IDE"
features that I can stay productive, and it's fast enough that I don't miss
Emacs' superior tools.

I don't think I can ever get used to a non-vi editor (I feel uncomfortable
even browsing without vim-style shortcuts thanks to pentadactyl/vimfx), but
there is one for Emacs so that is not a show-stopper.

I did in fact try Spacemacs for a while, and wanted to like it, but in the end
I couldn't get rid of my muscle memory to just start new editors in terminals
all the time, and Emacs' daemon mode had stability issues for me, so it wasn't
very usable: either it'd crash at times or startup would be unusably slow.

Muscle memory is a powerful thing. I had to alias "vi" to "nvim" just to be
able to use neovim...

~~~
pmoriarty
Neither neovim's or vim's ecosystem is primarily (or even significantly) Lisp,
though.

A fully Lisp ecosystem is one of emacs' greatest attractions, and one that
neither vim nor neovim is likely to ever achieve.

~~~
fmoralesc
Not with that attitude ;) [https://github.com/adolenc/cl-
neovim](https://github.com/adolenc/cl-neovim)

~~~
pmoriarty
Yeah, you can script vim in Lisp (Scheme to be more precise). That's been
possible for a long time, with mzscheme. But virtually no one ever does.

The vim ecosystem is overwhelmingly vimscript. Python is gaining popularity,
and if anything a mainstream language like that is likely what the neovim
ecosystem will eventually wind up consisting of. Not Lisp.

Contrast that with emacs, where it's Lisp, Lisp, Lisp, and will continue to be
Lisp for the foreseeable future (with a detour to Scheme possible in the long
run).

------
sevensor
This guy is completely correct in his decision. If you want magic, use emacs,
don't try to shoehorn it into vim. One of the reasons I left vim for kakoune
is that the impulse to turn vim into an IDE has led to scope creep. Vim feels
huge these days, where kak does a much better job of deferring to other
applications what they do well.

~~~
cat199
Precisely why I use _actual_ vi.. (well.. the nvi rewrite)

Unfortunately many current 'vi' users have never actually seen the real thing,
since most linuces simply alias vi to vim.. I realias it back to nvi because
every new vim distro package has a new layer of auto indenting shiny garbage I
have to unfiddle before approaching actual vi..

If I want fast text hacking, I use vi. If I want fancy stuff in the sweet spot
between basic editor and ide, I use emacs, and if I want vi key bindings in
that sweet spot, I turn on viper/evil. Done.

~~~
ktRolster
vim still opens in ~250 ms (or less) on my system. I'm not sure what problems
it's causing you.

~~~
majkinetor
I have 100++ vim plugins and get around 500ms startup because of contextual
loading by neobundle.

------
enknamel
Why do so many people only consider Emacs and Vim for programming? There are a
plethora of IDEs that have way more features out of the box and even have
plugins to make them compatible with Vim and Emacs usage so the switching cost
is almost zero.

~~~
dgfgfdagasdfgfa
If you're talking about a statically typed language built for refactoring and
static analysis like C# and Java (hopefully one day rust), you're absolutely
correct, that's a game changer and you should take advantage of that.

However, the functionality quickly falls off. I do tend to keep around
intellij, but mostly for the various debugger integrations, but you can
quickly replace any integrations with project-wide search and replace + a
decent auto suggest + compile/linting integration. That's not terribly hard to
find these days in emacs, vi, vscode, sublime, etc etc, and it's only going to
get easier when we start seeing language servers pop up so you can refactor
from any editor!

------
yellowapple
Re: the article's last point: I've actually found Emacs to be wonderful as a
"sysadmin's editor" thanks to TRAMP; I can edit a remote file on any of my
servers (provided I have SSH access, which is the vast majority of the time)
using my local machine's Emacs.

Even when I don't have SSH access to a machine (perhaps because sshd ain't
running yet), my increasing use of OpenBSD means increasing availability of
'mg' on my servers, which further means that I don't have to leave the comfort
of an Emacs-ish environment (even if I lose some of the more advanced
features). It's only on my Linux machines (and on SmartOS) that I have to
resort to 'vi' or 'ed' for anything, and even _that 's_ going away as more
distros ship with 'nano'.

~~~
pmoriarty
I always found directory navigation to be a pain with TRAMP and even dired.
Also, I like to run various commands on remote systems and not just edit files
there, so having a native shell open there is very natural for me, and emacs'
terminal emulations have been very clunky in my experience and require way too
much indirection in keyboard shortcuts on top of tmux and evil which I how I
use emacs.

------
Pfhreak
This is an aside, but why did the author prepend Emacs with GNU _every_ time?

From my understanding, GNU Emacs is a specific flavor of Emacs (which is a
general class of editor). From wikipedia, it's the most common flavor of
Emacs. Is it not generally understood that Emacs implies GNU Emacs? Would it
not be sufficient to introduce the article with, "... Emacs -- specifically,
GNU Emacs -- ..." and then carry on with Emacs elsewhere?

It seems needless, or even pedantic, but maybe I'm missing something?

~~~
ajross
In the modern world there basically is only GNU Emacs. The only other actively
maintained editor (well, there's Linus's microemacs tree too I guess) that
calls itself "emacs" is XEmacs, a long-time fork of GNU Emacs. But it's been
fading steadily over the past decade and at this point very few people use it
or even know about it.

Basically: yes, you can be unambiguous by just saying "emacs" and everyone who
cares will know exactly what software you use. But for the same reason it's
_not_ really correct anymore to use "emacs" to refer to a "general class of
editor". You need to be more explicit if you're invoking historical or oddball
variants.

~~~
Pfhreak
So, why did the author make such a point of using GNU Emacs everywhere? I feel
like I just read an article where the author says, "Apple's OS X" or
"Microsoft Excel" over and over.

Edit: Confused about downvotes too. My question comes from a genuine place of
not understanding.

~~~
pepve
Maybe he's a GNU zealot, they exist. The type to refer to Linux as GNU/Linux.
;-)

------
Philipp__
I never liked mixing Vim and Emacs. I used both, but for different things. I
use NeoVim as my terminal editor, with tmux, zsh and iTerm2. And I use it for
70% of code I write. Emacs I have Installed, GUI version, and I use it for
functional programming languages, mostly Lisp, Clojure, OCaml, Haskell feel
better in Emacs. So there goes other 20% of code I write in my free time
mostly playing with FP, those languages that lean on REPLs are clearly better
integrated into Emacs and all that FP history that is pretty relevant in
considering Emacs. And 10% is when I have to write something in Java where I
have to fire up IntelliJ Idea, thankfully it doesn't happen so often.

Never got into that Emacs as an OS mentality, but I can see it's appeal to
someone but I didn't like it. But I am really grateful for system wide
shortcuts in OS X, just C-A, C-E has saved me so much time in macOS. And yeah,
Emacs made me rebind ctrl to Caps Lock, which is so good, I can't imagine how
I used keyboard before this!

I like UNIX and use it for everything I can. (there is other thing on internet
called UNIX as an IDE)

Edit: and oh, I forgot there are some beautiful things with Emacs like magit.
I have understood git and it's concepts thanks to this emacs git interface,
now I am 10 times better and I know what I am doing in terminal.

------
colordrops
This just reads like anyone who's flirted with both editors. "I'm really
familiar with <editor A>, and I see the merits of <editor B> and wanted to use
it, but in the end I'm very familiar with <editor A> and decided to stick with
it". Not much insight here.

~~~
jcoffland
Actually, the author claimed to be more familiar with vi or rather that they
were using vi much more yet decided to go with emacs. Pretty much the opposite
of what you are saying.

~~~
erikpukinskis
No in the realm of plugins, which was the subject of the article, it's exactly
how OP says: they know the Emacs plugin landscape and not the Vim one. For the
relevant passage search "I'm not that person".

~~~
jcoffland
From the first paragraph of the article:

"The reality is that I already spend most of my editing time in vim"

------
jaequery
this post doesnt make sense to me, he could just run vim from emacs using
evil/viper mode. perhaps he is new to emacs?

~~~
brudgers
To me, running evil-mode feels like an extra layer of complexity that makes it
harder to debug problems. Vim has a good support ecosystem. Emacs has a good
support ecosystem. But the intersection where evil-mode lives is not a
particularly robust ecosystem...debugging problems means dealing with three
things: Vim, emacs in general, and evil-mode and then trying to sort out where
the problem sits.

