Skip to main content

Repeating commands in vim

One key shortcuts

This post is about one key shortcuts in vim.

Vim has macros to record complex sequences of commands.

We'll cover macros in a later post.

The most useful single key shortcut to repeat a command is the period.

n is a useful single key shortcut to repeat searches.

Let's look at how they work.

Repeating last change

Open vim.

Type 10i to go  into insert mode.

Type I love Lucy! and escape to normal mode with jj or the Esc key.

You should have ten lines that say I love Lucy!

Go to the top of the document with 1G.

Type dd to erase one line.

Type . (<- a period!) to erase another line.

The period repeats the last change.

You can quickly erase all the lines holding down the period key.

That was an artificial example, but here's a more practical one.

Type i to go into insert mode.

Type: This sentence would be all right, except that it goes on and on and on and on and on and on and on and on. That's kind of a problem with my sentences, that they are circular and never get to the point, ever.

Looking over the sentence, we want to get rid of the bold words: 

This sentence would be all right, except that it goes on and on and on and on and on and on and on and on. That's kind of a problem with my sentences, that they are circular and never get to the point, ever.

Type /on and followed by Enter to get to the first on.

Type www to get to first word you want to delete.

Type dw to delete the word. Now type . to delete each word that follows.

Fast!

Navigate to the other bold words and delete them in a similar manner.

Remember, we could also do something like this with delete followed by a search command.

Repeating search commands

Use n to repeat search commands in the same direction.

To change direction, type the command for the other direction alone.

For example, /gazelle searches forward for gazelle.

n searches forward for the next instance of gazelle.

? reverses direction to search for gazelle backwards.

If we type n after changing direction, it repeats the backwards search for gazelle.

Explanation

The dd key combination is new.

A repeated command means to apply that command to all of the current line.

dd means delete the current line.


Comments

Support blog with $5 contribution

Popular posts from this blog

Getting started with Vim

First vim file
Let's get something done in vim!

Open vim.
Do the following without changes.

Press i to go into insert mode. 
Type: "Hello, Dolly!" (with quotation marks)
Hit the Esc key to go into normal mode.
The cursor should be over the second quotation mark.
Type b to go back to the exclamation point.
Type cb to erase Dolly and go into insert mode.
Type World.
Hit the Esc key to go into normal mode.
Type : to go into command line mode.
Type w hello and hit the Enter key to save (write) the file as hello.
Type : to go into command line mode again. Type q and hit the Enter key to leave vim.
Congratulations!
You created a file hello in vim with one line of text, "Hello, World!"
So much for vim's famous learning curve!
Explanation
Vim is a modal text editor. We used three modes, normal, insert, and command line. 
Vim opened in normal mode. We couldn't insert text in normal mode. We could only give commands. Since we wanted to insert text, we gave the i…

Survival commands in Vim

Power
Vim is powerful.

When that power turns on you, it can be a disaster!

Let's learn how to recover from disaster.

Disaster!
Download War and Peace to your computer.

Open the file: vim 2600-0.txt (or vim <FILENAME.YOU.CHOSE>)

Imagine you're Tolstoy at your desk.

You just wrote War and Peace! It's a good day.

You type g followed by <Ctl>-g to see if your book meets the publisher's minimum 60,000 word requirement. Wow! 566,308 words! You're good.

But you can't remember if you wrote, "The End."

You type dG to go to the end of your document and check.

Whoops! You erased your whole book!

Maybe dG was the wrong command.

Salvation
Not to worry!

You type u (undo) and your whole document is restored.

Good thing you learned a few vim survival commands!

Erase War and Peace again. Feels powerful, doesn't it? dG was the command.

Type i to go into insert mode.

Type: Not only did I erase my masterpiece, but now I've typed over it!

Hit the Esc k…

Moving and deleting sentences in vim

What is a sentence?  Vim looks for punctuation to define a sentence.

Vim usually knows what a sentence is, but not always!

Here are two useful commands.

To move to the start of the next sentence, type ).

To move to the start of the current or previous sentence, type (.

Now let's see how these commands are used.

Open vim.

Hit i to go into insert mode.

Type or copy and paste this text:

Hello, Mr. Wilson. I was wondering if you could stop by this afternoon.

Hit <Esc> (or better yet, jj) to go back to normal mode.

Your cursor should be on the period of the second sentence.

Type ( to go back to the start of the current sentence.

Your cursor should be on the I at the start of the second sentence.

Type ( to go to the first letter of the previous sentence.

Oops! We ended up on the W of Wilson. Why?

Vim saw two sentences, "Hello, Mr." and "Wilson."

Two periods, two sentences.

Type ) to return to the start of the second sentence.

Type 2( to go to the start of the f…