viper: Search and Replace
4.2.7 Search and Replace
------------------------
Groundwork, for Ex address syntax. Options, to see how
to get literal (non-regular-expression) search and how to stop search
from wrapping around.
‘C-c /’
Toggle case-sensitive search. With prefix argument, toggle
vanilla/regular expression search.
‘<count> /<string>’
To the <count>th occurrence of <string>.
Viper does not parse search patterns and does not expand special
symbols found there (e.g., ‘~’ is not expanded to the result of the
previous substitution).
After typing ‘/’ or ‘?’ all the usual Emacs minibuffer commands,
such as ‘M-p’ and ‘M-n’ are available. In addition, typing ‘C-s’
will insert the last search string used by the Emacs incremental
search command (which is bound to ‘C-s’ everywhere except in this
case).
‘<count> ?<string>’
To the <count>th previous occurrence of <string>.
‘<count> g<move>’
Search for the text described by move. (off by default)
‘n’
Repeat latest ‘/’ ‘?’ (next).
‘N’
Idem in opposite direction.
‘%’
Find the next bracket and go to its match
‘:[x,y]g/<string>/<cmd>’
Search globally [from line x to y] for <string> and execute the Ex
<cmd> on each occurrence.
‘:[x,y]v/<string>/<cmd>’
Execute <cmd> on the lines that don’t match.
‘#g<move>’
Execute the last keyboard macro for each line in the region.
Macros and Registers, for more info.
‘Q’
Query Replace.
‘:ta <name>’
Search in the tags file where <name> is defined (file, line), and
go to it.
‘:[x,y]s/<pat>/<repl>/<f>’
Substitute (on lines x through y) the pattern <pat> (default the
last pattern) with <repl>. Useful flags <f> are ‘g’ for ‘global’
(i.e., change every non-overlapping occurrence of <pat>) and ‘c’
for ‘confirm’ (type ‘y’ to confirm a particular substitution, else
‘n’). Instead of ‘/’ any punctuation character other than <space>
<tab> and <lf> can be used as delimiter.
Note: _The newline character (inserted as ‘C-qC-j’) can be used in
<repl>_.
‘&’
Repeat latest Ex substitute command, e.g., ‘:s/wrong/right’.
‘:global /<pattern>/<ex-command>’
‘:g /<pattern>/<ex-command>’
Execute <ex-command> on all lines that match <pattern>.
‘:vglobal /<pattern>/<ex-command>’
‘:v /<pattern>/<ex-command>’
Execute <ex-command> on all lines that do not match <pattern>.