Vim Search & Replacement & Regex (with Zero Width)
Options
- g Replace all occurrences in the line (without g - only first).
- c 表示进行确认
- p 表示替代结果逐行显示(Ctrl + L恢复屏幕);
- 省略option时仅对每行第一个匹配串进行替换;
magic
- magic (\m):除了 \$ . * ^ 之外其他元字符都要加反斜杠。
- nomagic (\M):除了 \$ ^ 之外其他元字符都要加反斜杠。
这个设置也可以在正则表达式中通过 \m \M 开关临时切换。 \m 后面的正则表达式会按照 magic 处理,\M 后面的正则表达式按照 nomagic 处理, 而忽略实际的magic设置。
Example
12/\m.* # 查找任意字符串/\M.* # 查找字符串 .* (点号后面跟个星号)
另外还有更强大的 \v 和 \V。
- \v (即 very magic 之意):任何元字符都不用加反斜杠
- \V (即 very nomagic 之意):任何元字符都必须加反斜杠
Example
|
|
默认设置是 magic,vim也推荐大家都使用magic的设置,在有特殊需要时,直接通过 \v\m\M\V 即可。
贪婪or非贪婪
- 正常搜索都是贪婪 (
*
) \{-}
为非贪婪
|
|
example
|
|
|
|
|
|
Zero-Width
|
|
With very magic(preferrted)
And with no very magic:
Example
从m到n行所有的str1替换成str2
|
|
替换^M 字符
|
|
当前行到最后
. ,$
删除空行
|
|
:%s/(That) or (this)/\u\2 or \l\1/
:%s/child([ ,.;!:?])/children\1/g
:g/mg([ira])box/s//mg//my\1square/g <=> :g/mg[ira]box/s/box/square/g
:%s/ */ /g
:%s/([:.]) */\1 /g
:g/^$/d
:g/^[ ][ ]*$/d
:%s/^/> /
:.,5/$/./
:g/.*/m0O <=> :g/^/m0O
:g!/^[0-9]/m$ <=> g/^[^0-9]/m$
:1,10g/^/12,17t$
:g/^chapter/.+2w>>begin
:/^part2/,/^part3/g/^chapter/.+2w>>begin
:/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$
:%s//new/g
:%s/\v(\w)(\w\w)/\1y\2/g
:%s/^./&y
%s applies the pattern to the whole file.
^. matches the first character of the line.
&y adds the y after the pattern.
```