Vim is a text editor. It is modal, meaning it has multiple modes that each have their own keymappings and commands. At first this will seem limiting, but with a little time and patience it will start to feel natural.

I first learned Vim when I had to work on the Spartan Python package as part of a summer research job during college. The code only worked on the school’s Linux cluster and I wanted to quickly ramp up without having to install a GUI on my workstation (and remote in) or figure out how to use Sublime and rsync.


Your machine probably already comes with Vim, but I still like to upgrade to the latest versions.

$ brew install macvim  # macOS
$ sudo apt-get install vim  # Ubuntu/Debian


To customize Vim, you modify the settings and add your own functions in ~/.vimrc. My vimrc can be found in my dotfiles repo.

Plugins for other editors and IDEs

Note, I don’t have experience with Emacs (yet), but have used Vim emulation in all of the other editors and IDEs in this list.