Considering Vim? Looking for a good reason to switch? Vim is a powerful and simple text editor.

Why should you learn Vim?

I use Vim for writing code, documentation, editing configuration files, and taking notes. It works great for me. If it’s not your cup of tea, that’s okay. There are many other text editors today.

Nowadays I edit all text files in Vim and vi, but I used to use other editors as well: Norton Commander, Microsoft Notepad, Far Manager, GNU nano, gedit, BBEdit, TextEdit, and Sublime Text.

I tried Atom, Emacs, Coda, VSCode, Xcode, WebStorm, TextMate, Light Table, and few others, but not longer than for few days. Maybe someday I should try Emacs again.

I used to use Microsoft Word, Pages.app, and Google Docs a lot, now I prefer Markdown and Jekyll.

So why did I switch to Vim? Why should you?

Vim is powerful

Vim has everything you may need for text editing out-of-the-box: syntax highlighting, autocompletion, split screen, diff, spell checking, text formatting, text objects, persistent undo, automatic commands, macros, scripting, and many more.

Most of Vim features are kind of hidden and it makes sense, nothing stands on your way when you are working. Although, such minimalism makes learning curve a bit steeper.

On the other hand, everything in Vim is thoroughly documented and the documentation is always available via :help command.

Vim is keyboard-based

Usual Vim command is a sequence of keystrokes. You rarely use key chords in Vim and you don’t need a mouse.

You can effortlessly make large edits with few keystrokes, because Vim has commands, movements, and can operate text objects: paragraphs, sentences, words, etc. Everything is mnemonic. For example, you can type dap in normal mode to “delete a paragraph”, and ciw to “change in word”, and so on.

Vim is extensible

Vim can do a lot without any customization or plugins, but you can tailor Vim for your needs. There are tons of plugins for Vim (you may need just few), you can install and update them with ease.

Vim is well integrated with command line tools (grep, git, head, tail, tee, find, cp, mv, rm, cut, uniq, sort, etc). With pipes and redirects you can compose programs to do any text manipulations you may need.

Vim is fast

Vim doesn’t need a lot of resources to perform well. Its startup time is under six milliseconds:

$ vim -u NONE --startuptime vim.log +q
$ tail -n 1 vim.log | cut -f1 -d' '
005.287

To be fair, to start Vim with a dozen of plugins and to open a file takes about 60 ms. Still impressive.

Vim almost never lags and typing latency is very low. Typometer shows 4.8 ms for Vim in Terminal.app on macOS.

Even when you are editing files on a remote machine over SSH and the internet connection is slow, you still are in control, because in Vim you can do a lot with a single command: quick jumps inside a large file, switching among multiple files, searching and replacing across all files in a project, etc.

Yes, Vim works perfectly in a terminal over SSH. You can edit files remotely and be as productive as on your computer.

Vim is future-proof

Vim (or its predecessor vi) is pre-installed on all Unix-like machines (macOS, BSD, Linux). Vim has been ported to almost all operating systems, including Windows.

Vim is a free and open-source software. It’s a time-tested software: vi released in 1976, Vim — in 1991. Vim will stay around for a long time. Once you learned Vim you may use it for decades. You workflow may change, programming languages come and go, but Vim always does its job well.


Still undecided? Try Vim for a couple days.