You should become proficient in vim or emacs posted on 09 February 2024

A lot of people don’t learn vim/emacs because the learning curve is pretty steep. I think that it’s extremely useful for software engineers to be proficient with one of these 2 editors:

  • They are light and make working on 2 PRs in parallel significantly easier – especially when compared to heavy IDEs like Intellij/Eclipse/Visual studio. It’s also the case if you work on a remote machine.
  • Similar to one of my previous posts about tinkering your setup, leaving vim/emacs will help you develop a strong will to figure out things. The learning curve is honestly more like a function step, but the effort is worth it.
  • These editors are not necessarily always the best for the given use case but they do provide pretty neat features – e.g. macros in vim are pretty powerful, they sometimes work wonders when sed isn’t a good fit.
  • I believe they are also easier on your body (namely wrists/fingers). While it does reduce the number of keystrokes, it more importantly reduces how often you have to move your arms/twists your wrists (to touch your arrow keys or your trackpad). If you pair them with a tiling window manager (e.g. awesomewm), you’ll end up with a very stable position where you won’t have to move your wrists much. I believe this is what allowed me to efficiently work in the train when I was living in San Francisco and commuting to Mountain View.
  • Last but not least, they are better suited when paired with CoPilot – these editors are just more efficient to tweak/update code than other IDEs (because you can yank text, have macros etc.). I’ll talk more about CoPilot and other AI tools for engineers in a different post, but this is definitely something worth keeping in mind.

To be clear, I’m not saying everyone has to use vim/emacs all the time but I do believe they are powerful tools that software engineers should be proficient with – similarly to how you should be proficient with grep/sed even though you don’t have to use it every day.

LinkedIn post