Heading image for post: Why Vim?


Why Vim?

Profile picture of Jake Worth

Hashrocket is known as a Vim shop; what does that mean?

When visitors learn Hashrocket is a "100% Vim shop", questions follow:

  1. Does everyone use Vim?
  2. Is Vim mandatory at Hashrocket?
  3. Why Vim?

These are fair, and I admit that from the outside, our company's preference for Vim might seem unusual.

When we evangelize Vim to the development world, via the Vim Chicago Meetup and others, the questions become more acute. In a recent talk I tried to sell Vim to React.js developers. I feel obligated to have compelling, succinct answers on hand.

I'll tackle this subject in three parts: why Hashrocket uses Vim, what Vim is, and why we think every developer should try Vim. Few subjects are as contentious in the development world as text editors. Whatever you use, learn and make it your own. I hope to simply add Vim to the list of things people are willing to consider, if it's not there already.

Hashrocket + Vim

Hashrocket and Vim have a long history. We love this 25-year-old text editor. Many of our blog posts, TILs, and open source projects over the years have been Vim-focused.

According to Hashrocket lore, Vim was brought to our team by an early Hashrocket employee, Tim Pope. Tim is the author of many widely used Vim plugins. His passion catalyzed a shift from the editor of the day, TextMate, toward its retro predecessor.

We are known as a Vim shop; what does that mean? It means that everybody who works at Hashrocket either is or becomes a Vim expert. Vim isn't required for our job applicants, but it doesn't hurt and can be an impressive data point when used well.

Who cares what tools people use? Because we pair program most of the time. People can and do prefer other editors, but when client code is being written involving almost any two developers on our team, Vim is the shared workbench. In a profession of nonstop decision making, it's one less to make.

Our passion translates into sponsorship of the Vim Chicago Meetup. We meet on the third Tuesday of the month for long form presentations, lightning talks, and hack nights.

Let's backtrack: what is Vim?

What is Vim?

According to its website, Vim is:

A FOSS advanced text editor released by Bram Moolenaar in 1991. Based in the Vi text editor.

Vim has three facets that make it stand out. It is:

  • Modal.
  • Highly configurable.
  • Legendarily challenging.

Let's explore each in greater detail.

Vim is Modal

Modality was Vim's big idea. To paraphrase my coworker Chris Erin, developers spend more time reading code than writing it. Thus, an editor should be optimized for what we do most often.

Your mileage may vary; I feel that I spend, on a tough bug, maybe ten minutes reading code for every one minute that I spend writing it. Most text editors are optimized for writing, so the easiest thing to do is the thing I do the least.

Vim is Highly Configurable

Vim has many paths to customization:

  • Settings (via your ~/.vimrc)
  • Mappings (such as nnoremap)
  • Functions
  • Plugins

Each of these could fill a book on its own. Customization is a feature of most text editors, but the vibrant OSS ecosystem and bottomless customizability of Vim is unmatched.

Vim is Legendarily Challenging

Vim is perceived as an editor where the "basics are hard", and I don't disagree, at first. See 'How to exit the Vim editor?', a trivial question with over 1 million views on Stack Overflow. This is the so-called 'vertical learning curve'; it's real and every developer who uses Vim has had to confront it.

Why Vim?

There a lot of potential answers to this question: Vim's speed, wide adoption, and depth are all attractive. For me, the best argument is flexibility.

Vim is a blank, endlessly configurable slate. It's written in a language called VimScript, which itself has plenty of dark caverns you can spelunk to your heart's content. The vibrant OSS community behind Vim means it's constantly rising to every development challenge that appears. A developer's Vim setup is a reflection of the things they value, as personal as a fingerprint.

There are a lot of other reasons to consider, and if you come to Vim Chicago Meetup, you'll be exposed to and able to offer more of them.


I hope this post has helped give some insight into what Vim means to Hashrocket. If you come pair with us, prepare to learn some new Vim tricks, and teach us some, too.

Photo credit: https://unsplash.com/photos/w5inNVfSyNU

More posts about Vim