A few days ago I started to think about transitioning from Vim to GNU Emacs. As a Vim user for more than 6 years, considering the Holy Wars, I should’ve got skinned alive.
I have tried Emacs in the past, but to no avail. I found the switch to be a little obtuse, as in Vim you’re used to working with multiple modes, one-key-commands, operators and motions, while Emacs is based on using (a lot of) key combinations and modifier keys to get the job done. As I started transitioning, I started to understand why is this, and how it made more sense the more I used it.
Making the switch
I am a regular, mostly daily, user of JetBrains products, so I’m used to working in huge
behemoths some pretty nice IDEs for doing actual work and not just fiddling around through files
or configuring anything. First thing I used to do on every product install was to install
IdeaVim, a plugin
that offers Vim emulation for IntelliJ IDEs. It helped me a whole lot for quickly navigating up and
down in files, easy text manipulation, and so on.
I was also used to fire up a vim
for each file I needed to view1 or edit, then
exit vim, open
another file, and so on. I also rarely used the (limited?) directory browser in Vim. This was a job
consisting in multiple terminals, as I didn’t quite enjoy the buffers in Vim.
I had to quit.
I installed Emacs on my desktop, and also put it on my laptop for having it to go. On my Manjaro install, I was surprised to see a huge difference in size between it and Vim. At the time of this post, Emacs was 127 MiB installed, while Vim was only 3.5 MiB, which is roughly 35 times smaller than its counterpart.
I started doing the tutorial (C-h t
) again and again, until I managed to remember and understand
the logic behind using modifier keys and various key combinations. Sounds easy, right? Maybe just a
little bit.
Using Emacs for common tasks
I’ve started keeping Emacs open most of the time, and trying to do everything in it; from, well, text editing, to using its shell, customizing it, extending it through various plugins offering major and minor modes, editing files through SSH directly from it, and so on.
The more I used it, the more keybindings I managed to remember and understand. The GUI helps, as it shows you some of the keybindings while hovering some of the buttons, and items in the top menu. Switching between the buffers and shell while working in both is far easier than I first imagined.
I started reading multiple posts on the matter of Vim vs Emacs, how to setup Emacs as an IDE or
development medium, etc., and that allowed me to write a very tiny .emacs
file in order to get it
up and running. I installed Helm, company, a lot of plugins to make life easier when writing code,
and read the help for the every function or command they provide and I needed to use.
All in all, it’s actually feeling pretty good to have access to external processes, intelligent autocomplete in command menu, and being able to actually call functions and commands if you can’t remember the key combination.
Conclusion
I’m happy I’ve done it. Vim’s keystrokes are unable to forget, but I’m glad I can do more from a single place.
-
vim
also providesview
, which opens a file read-only ↩︎