10 Reasons to Learn Vim

Vim can be tough for beginners. If you're struggling along with my Vim 101 posts, but still haven't felt confident enough to use it every day, then my advice is to be patient. Here are some reasons to keep learning Vim.

1. Ubiquity

There are innovative editors out there apart from Vim. However, some are only available for a single platform. What happens if you invest time learning one of these editors, then get a new job where you can't use that platform?

If I got stuck in Windows on a job then I'd get straight to work using gVim. With Mac OS X I'm comfortable with console Vim. Both also run extremely well in Linux and the BSDs. I've even got Vim on my iOS and Android devices.

2. Lifelong Skill

Over the years vi and Vim derivatives have come and gone. There are also a plethora of commercial editors that have fallen by the wayside. I've been using Vim on and off since I first started using Linux in the 90s. Learning Vim has proven to be a skill that has stood the test of time, unlike many other technologies that have long since fallen out of favour.

3. Configuration

You can hack Vim to behave however you want it to. On my personal blog, the most popular post is Build an IDE with tmux and Vim, where I described how to make Vim and tmux behave like a GUI IDE. The point was that you can make a highly adaptable IDE based around the task at hand.

I'm happy using Vim for programming with compiled languages, scripted languages, writing blog posts, and even for writing books. This isn't just because Vim is configurable, but because it's so quick to change settings. There's no clumsy preferences menu, just a command entry with completion.

4. Community

The Vim community is extremely active -- the Vim Script index on Vim's site has thousands of plugins, and GitHub is increasingly useful for finding interesting Vim-related projects. There are also several Vim-related mailing lists.

5. Documentation

Fight your instinct to search the web for solutions to Vim-related problems and learn to use Vim's help system. It's not actually difficult to use, and there's a wealth of searchable documentation. I promise it's better than the average man page, and it covers everything from configuration to writing themes and plugins.

6. Touchscreens

Believe it or not, Vim works pretty well with a touchscreen keyboard. The main reason for this is Vim doesn't rely on hotkeys -- commands can be typed normally.

I think it would be worth further exploring Vim's modal design in the context of mobile devices, maybe even for interfaces outside of programming or technical tasks.

Read more about Vim for iOS and VimTouch for Android.

7. Killer Features

Vim has several killer features, but the notion of a "killer feature" depends on your point of view. I think when people first see something like ctrlp.vim they're impressed by it, but my personal killer feature is pretty humble: motions. I love the way motions work with operators, and how fast text can be navigated in Vim. Learning about f and t was a eureka moment for me.

Everyone uses Vim differently, and its design means you'll find your own set of killer features that you can't live without.

8. Scripting

Most people would design an editor by embedding a scripting language, but Vim itself can be scripted. Your vimrc file is a Vim script, and Vim can read commands from files or standard I/O.

9. Console UI

Vim's console interface is surprisingly flexible. It'll work with the mouse, which enables windows to be selected and resized, and this works solidly in many terminals. I leave a copy of Vim running on a server with several split windows containing various notes, and the mouse works flawlessly with it from my Mac and Windows machines.

10. Editor Features

Vim's editing features are prolific. It supports macros, multiple clipboards in the form of registers, regular expressions, visual selection including blockwise selection, integration with build systems, plugins and themes, and a lot more. These features are the main reason to learn Vim, the meat and potatoes of daily programming chores.

If you're still trying to learn some of these features then stick with my Vim 101 posts and hopefully you'll master them in no time.

blog comments powered by Disqus