Strikingloo

Vim: How to Start Using The Text Editor for Developers

Note: I originally wrote this article on my first blog, so it may not be as polished as newer things.

To some, Vim is a beautiful relic from the past. To others, it’s that annoying thing you have to escape whenever you need to write a message for a merge commit.

Let me introduce you to this picturesque text editor and its wonders, and show you why we’re still using it 26 years after its first release.

First a small piece of advice: this text editor shines the most when used for editing structured text files (like JSONs) or code, not so much when writing new files from scratch (though I do use it for that a lot too). Also, many people like adding a vim plugin to their IDE instead of going full vim, so they get the commands and the nice UI. Your mileage may vary.

Now fire up your terminal on your working directory of choice, and type

vim sample.txt

so that we can start this tutorial.

First steps: navigating, editing and exiting.

Whenever you open Vim on a file, there are three basic things you may want to do:

To navigate a file on Vim, use the letters h,j,k, _and l.These commands are called motions_, as they move the cursor.

The keys h and l will move your cursor horizontally (one character at a time), while j and k move vertically (one line at a time). If you put your hand on them, the layout sorta makes sense.

Some people have trouble remembering which key goes up and which goes down. Pro tip: j sorta looks like a downwards pointing arrow.

As a general note, it is considered bad practice -even though it’s possible- to use the arrow keys for moving in Vim. Get used to using hjkl, and I promise you’ll see a significant boost in speed.

Repetition

Once you’re confident moving through a file one character or line at a time, try pressing a number (any number, it could have many digits) before moving. You’ll jump as many times as the number you entered.

This is a powerful concept in Vim: Repetition. Have you ever found yourself editing a text file and doing the same thing over and over? Especially something mundane, like deleting quotes and replacing them with commas? Vim’s got you covered: Just do the thing once, and press . to repeat it. Enter a number and press . again if you want to repeat it as many times.

Edition

Moving around in a text file and reading what’s in it is good and all, but what if we need to change some of its contents? Do not despair, editing a file is as easy as pressing the i key. That will move you from normal mode into editing mode.

Most Vim commands will only be available on normal mode, and entering editing mode is usually frowned upon, and should be avoided as much as possible. However, when entering editing mode, Vim will be like any other Text Editor (with Syntax Highlighting on), making its functionalities a superset of those available in your typical notepad.

To exit editing mode, press the ESC key.

Quitting

To quit Vim, enter normal mode, and press :wq if you want to save your changes (write and quit), or q! if you want to leave without saving.

More commands: Some Useful Features.

Editing files from the terminal might make you look like a cool hacker or something, but why should we use this text-based program instead of good old Sublime Text? The answer is commands.

A thousand ways of deleting text

Want to delete part of your file? You could enter editing mode and press backspace once for every character. It doesn’t really beat using Sublime and pressing ctrl+shift+left to select a whole word before deleting it.

If you really want to harness the power of Vim, you should try pressing the_d_key. Pressed once, it won’t do anything. But it’s not sitting idle, it is actually expectant, waiting for an order. Pass it a motion like the ones we learned today (l, 5j, whichever you feel like really) and it will gobble those characters up. For instance, dNl for any number N, will delete the following N letters from the cursor.

Introducing new motions

So if I have this text:

Hello there, general.

And my cursor is standing on the H. When I press de in normal mode, the line will end up looking like this:

there, general.

While using dw will leave it like this:

there, general

Notice how in the second example, there’s no space before ‘there’.

We could then press i to insert some replacement word after deleting ‘Hello’. Luckily, there’s an even more fluid way of doing that: the c command (for change). Pressing c and a motion is exactly equivalent to pressing d+motion+i.

This is starting to look nicer, but it still doesn’t beat pressing shift+home/end and deleting a whole line in a few keystrokes, right? Well I see that, and raise you to the $ and 0 motions.

There’s an even faster way of deleting the whole current line though: dd. And if you want to delete many lines? dxd deletes the x following lines.

Generally useful Vim commands

By now, the usefulness of vim when editing code should start to become apparent.

A few other commands you may want to check out are:

When writing software, I find myself duplicating lines to change a few words quite often, so I think Yp is an amazing command.

Conclusion

I’ve barely scratched the surface with this introduction, but I hope I’ll at least have persuaded you into trying Vim out for yourself. It may not replace an IDE if you’re coding in Java or C++, especially if you’re using frameworks and auto-complete is helping you. But when coding in C or Python, I usually pick it as my editor of choice. And sometimes when I need to transform a string quickly, editing it from Vim is faster than coding a script in Bash or Python.

I also encourage you to try the software on your own, and run the vimtutor program from your shell (it usually comes preinstalled with Linux and on Macs). If you want to really learn how to optimize your Vim use after going through vimtutor, this geeky, awesome site vim golf may be of interest to you as well.

I hope you found this article useful or interesting, and as usual any feedback will be welcome, whether anything I said was plain wrong, or you actually liked some part of this tutorial.

Follow me on Twitter for more Programming tutorials, tips and tricks, and if you liked it please consider tweeting my article.

[Share on twitter]

14 Apr 2019 - importance: 5