(avoiding ^M) |
(add category, remove review template (tip is pretty decent)) |
||
Line 1: | Line 1: | ||
− | {{review}} |
||
{{TipImported |
{{TipImported |
||
|id=316 |
|id=316 |
||
Line 10: | Line 9: | ||
|rating=8/5 |
|rating=8/5 |
||
|category1=Scripting |
|category1=Scripting |
||
− | |category2= |
+ | |category2=Searching |
}} |
}} |
||
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. |
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. |
Revision as of 20:10, 7 July 2009
created August 19, 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.