使用Vim很长时间了, 我对于替换命令的印象还是最基本的这样
所以写下本文是为了好好梳理一下, 本文只总结最常用的方法对于不常用或比较复杂的不进行介绍
本文基于Vim Docs, 想看官方文档的请在Vim中运行
:%s/pattern/string/g
所以写下本文是为了好好梳理一下, 本文只总结最常用的方法对于不常用或比较复杂的不进行介绍
本文基于Vim Docs, 想看官方文档的请在Vim中运行
:h :s
基本格式
替换命令的基本格式是
我们可以分成
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
我们可以分成
[range]
s[ubstitute]
{pattern}
{string}
[flags]
[count]
来进行讲解
[range]
range太强大, 很多地方都可以用的到, 所以我单独写了一篇: Vim range详解
s[ubstitute]
这里的
s[ubstitute]
代表动作为替换, 由于substitute
太长, 一般简写s
即可
{pattern}
用来匹配的正则表达式
{string}
用来替换的内容
支持正则表达式的子匹配
支持正则表达式的子匹配
\0
匹配到的字符串\1
第一个子匹配\2
第二个子匹配…以此类推\r
换行\b
backspace\t
table\\
\
[flags]
Options
c
confirm, 每个匹配都可以选择替换还是不替换y
yes, 替换l
last, 替换并退出n
next, 跳过a
all, 替换此次和后面所有q
quit, 退出
g
对行内所有匹配, 如果没有这个标志, 默认只替换行内匹配的第一个i
ignore 忽略大小写I
不忽略大小写n
不进行替换, 只显示匹配成功的次数p
print, 显示最后一次匹配的行#
类似p
, 同时显示行号l
list, 类似p
, 但显示方式类似于:list
[count]
替换的行数
默认为一行
如果
否则是
默认为一行
如果
[range]
省略, 连光标那一行往下一共[count]
行的范围否则是
[range]
最后一行往下一共[count]
行的范围
0 comments:
Post a Comment