Wikia

Vim Tips Wiki

Changes: Using normal command in a script for searching

Edit

Back to page

(Change <tt> to <code>, perhaps also minor tweak.)
(Comments)
 
(One intermediate revision by one user not shown)
Line 41: Line 41:
   
 
==Comments==
 
==Comments==
  +
Note this will not change the current search after the function exits (only the search history) see ":help function-search-undo". (gvim 7.3 win 32b)

Latest revision as of 02:08, December 30, 2012

Tip 316 Printable Monobook Previous Next

created 2002 · complexity intermediate · author David Brown · version 6.0


There are a number of ways you can search for a pattern in a script. The search function is the typical way to search for a pattern. But, it has limited options. In particular, there are no options to control the position of the cursor after it matches the pattern.

Instead you can use :normal command. The secret is to add a <CR> (^M) on the end of the command. For example, to search for "pattern" and move the cursor to the end of the matching pattern issue the command:

:normal /pattern/e+1^M

where ^M is a real carriage return. It can be entered with <c-v><c-m>.

Another use is when you want to enter a bunch of normal commands together. For example, if you were looking to find a '{' to highlight and delete a C block. The '{' may not be on the same line so you can't use the "f" normal command.

:normal V/{/^M%d

Rather than using literal ^M characters, you can use :execute to allow you to place the entire command a string, which lets you use "\<CR>" instead. The first example would thus become:

:execute "normal /pattern/e+1\<CR>"

A drawback to using the normal command is that if the pattern does not match then it is difficult to detect. Also, you can get in trouble with the wrapscan setting.

ReferencesEdit

CommentsEdit

Note this will not change the current search after the function exits (only the search history) see ":help function-search-undo". (gvim 7.3 win 32b)

Around Wikia's network

Random Wiki