vim通用的搜索替换命令,但是这些其实有很多花样可以玩耍
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
[range]可以选择,%代表全文。如果不使用%,那么只在当前行搜索替换。
比如说以下进行全文替换
:%s/old-text/new-text/g
而下面只进行当前行替换
:s/old-text/new-text/g
这个range还可以这样写,比如第2行到第10行,写成"2,10"
:2,10s/old-text/new-text/g
还比如说你通过vim的可视范围选择,通过CTRL + V ,使用方向键选择你要标注的文本区域,然后按‘:’ 会自动敲入 :'<,’> ,然后使用命令进行替换
:'<,'>s/helo/hello/g
其中符号的含义如下
'< start line
`< start character
'> end line
`> end character
按v选择文本可视区域,或者 V选择光标所在行,或者Ctrl-V (使用Ctrl-Q ,如果Ctrl-V设置成粘贴)选择方块区域。
选择完区域,移动光标所在区域 (比如j 是向下, w是移动一个单词,或者/
进行搜索,}一个段落等),还可以使用 gv 选择上次的记忆区域,
:s
匹配范围为整行,\%V
则限定更小的区域,使其仅在可视范围选择内匹配。这适用于按字符和按块选择(但不适用于按行选择)。
例如,将光标放在这一行:
music amuse fuse refuse
在正常模式下,键入^wvee
直观地选择“amuse fuse”(^
转到第一个非空白字符,w
向前移动一个单词,v
进入视觉模式,e
向前移动到下一个单词的末尾)。然后按 Escape 并输入以下命令,将当前行内最后选择的区域中的所有“us”更改为“az”:
:s/\%Vus/az/g
结果是:
:s/\%Vus/az/g
下面再看一个例子,
Before block with old and sold.
First told abc old sold gold.
Another is old, gold but not cold.
Last is older, fold not bold.
After block with fold and older and bold.
执行区域选择:
/abc
然后按住Enter跳到'abc'位置.eee
跳到直到单词 "sold"的位置.jj
往下跳到第三行使用下面命令进行可视范围"old" 到 "NEW"的替换. T
:%s/\%Vold/NEW/g
结果是:
Before block with old and sold.
First told abc NEW sNEW gold.
Another is NEW, gNEW but not cold.
Last is NEWer, fNEW not bold.
After block with fold and older and bold.
flags可以选择c(交互式,这里c会依次便利所有出现搜索词的地方,然后挨个让你确认是否替换),g(代表行的所有搜索词匹配地方,如果不加g,指的是一个行只会出现至多匹配一次),i(忽略大小写),
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。