Vim is a text editor from the 90s and I couldn’t stop thinking about it while reading the first chapter of Designing Interactions (Moggridge).
Vim is a text editor that:
- doesn’t take advantage of any graphical methods
- does not use the mouse
- has separate modes for editing and writing
- requires hours of practice to become proficient at using
However, proponents of the editor appreciate its scriptability, customizability, and speed.
The first chapter of Designing Interactions describes the development of desktop computing, graphical user interfaces, and mice. Vim encapsulates many of the problems that the chapter describes trying to solve. eg: modes and insert vs append
Let’s try Vim
Vim is still around and surprisingly popular. You probably have Vim on your computer. If you open up your terminal app and simply run the command,
vim, there’s a high likelihood it will fire right up.
That is exactly how many people are first introduced to Vim. Unfortunately, many people have the same problem with Vim about 1 second later.
And many users find usability going downhill from there. 😱
In the above gif of Vim, it shows me:
- making a new file named
- entering the text
- saving the text
Here’s the same work done in a modern text editor named Atom:
Vim is great for experts, but terrible for new users
The basic operations of text editing are:
- opening an app
- editing some text
- saving it
- closing the app
Vim does not excel at these basic tasks and most users find learning to do the basics with Vim much more difficult than with GUI text editors.
Vim is not intuitive for most users that grew up using graphical user interfaces and desktop publishing applications like Microsoft Word.
The concept of separate modes for editing and writing have mostly been abandoned since the popularization of GUI’s and there is nothing that makes these concepts discoverable to a new user.
Ease of learning
Vim can be extremely powerful once a user learns to use the scripting capabilities, but it takes many hours to become proficient.
Even the basics of navigating around text, copy and pasting, appending and inserting text are generally much more difficult than with GUI editors.
Modern tools for programming commonly have a feature called a command palette. It’s a pop-up search field that exposes available commands and some documentation.
This enables new users to quickly find what they are looking for in plain english and usually a keyboard shortcut to help the user do it again faster in the future. Most tools use
command + shift + p to bring up the palette.
Jupyter Notebook’s palette:
Apple has has updated the MacOS Spotlight tool to work similarly:
Efficiency of use
The efficiency of using Vim vs modern text editors like Atom is up for debate.
Vim excels when expert users need to do extremely complicated edits, but really lags when beginners need to make basic edits.
In my experience, using Vim also requires a lot of Google-ing. Most modern text editors require only a single pass at explanation since tools like the command palette enable further learning.
Error frequency and severity
Vim gives relatively helpful error messages. However, it also has subtle variations on many operations (including undo). Since it’s mostly up to the user to track state changes, it is pretty easy to find yourself unable to undo your last change as a beginner.
Some people really love Vim, but most users find it not worth the time needed to get good at using it.
My analysis framework was taken from Usability.gov, Usability Evaluation Basics.