Go to next match and select

4.7
(82)

In Vim, the previous action can be repeated with the dot command. This is how Vim power users can get so much done so quickly: Structuring their operations into commands that can simply be repeated with a tap of the . character. The gn command is one oft-overlooked Vim command (added in version 7.4) that can help build repeatable replacement operations.

To find a matching pattern in Vim, we simply use the / command. Type /foo and Vim will find the next reference to “foo” in your text and move your cursor there. From here, we can perform any kind of replacement. For example we could change the word with cw by typing cwbar<Esc> to change the word to “bar”. Now, we can press n to go to the next “foo” match and press . to repeat the same change.

But gn gives us an even better way. Read the :help gn docs for the full details but here’s the short summary: Pressing gn will jump forward to the next match of the last used search pattern and visually select it. We can prepend this with c for “change” to get cgn which will find the next match of the previously used search pattern, select it, and enter insert mode. Then we can type our replacement and press <Esc>. To repeat this, we only have to press . instead of n and . — shortening our action to a single key press.

Watch the demo to see this in action. Here’s what I do:

  • / million – Finds the first match of ” million”
  • cgn – Changes the next match of my pattern
  • M USD<Esc> – My replacement pattern
  • Then I just press . to repeat it

There is another variation of this, gN, which does the same thing in reverse. So if you want to change progressively backwards from your cursor position through the file, use that gN.

You can combine gn with all kinds of other commands, too. Try dgn to delete the next match — repeatable, of course, with just a dot.

How useful was this tip?

Average rating 4.7 / 5. Vote count: 82

No votes so far! Be the first to rate this tip.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Written by

Colin Bartlett

81 Posts

Vim enthusiast and software developer for more than 20 years.
View all posts

1 thought on “Go to next match and select”

  1. I’ve seen this feature before and for some reason always had a disconnect about using it SO never got in the habit of using it. I believe this tip may have fixed that. Thanks.

Leave a reply

Your email address will not be published. Required fields are marked *