如何在替换中进行替换?
我知道您可以将光标下的当前单词放入替换中,但我想在将其作为输出之前对其执行替换。
例如:
- 拥有通过 clbuttic filter 的文件并替换您知道受到更坏影响的词,例如去机构化(提示:美利坚合众国的 Consbrestution)。该文件也有一些被正确替换的词。
- 在整个文档中将 Wooloomooloo 中的
o
更改为0
(并且仅针对该词)
一个真实世界的例子(来 self 的 vim 历史)正在 Latex 文档中运行
%s/\\begin{table}\[h\]/\\begin{table}\[H\]/c
我复制字符串的地方只是为了做一个小改动。
最佳答案
将 o 替换为 0 很简单:
:s/o/0/g
也许您想知道如何将它应用于(视觉)选择?
:s/\%Vo/0/g
编辑可能是你想要的(见评论)
:%s/\<\zs[Wolm]\+\>\ze/\=substitute(submatch(0), 'o', '0', 'g')/g
这是做什么的:
-
[Wolm]\+
匹配仅包含W
的序列,o
,l
,m
-
\<[Wolm]\+\>
匹配(独立的)相同的词(所以,Wooloomooloo 或mooW
、Wlomo
都匹配,但不匹配amool
等)。 -
\zs
标记替换的匹配 的开始,\ze
结束 -
\=substitute(submatch(0), 'o', '0', 'g')
替换匹配项(在\zs
和\ze
之间)但替换为0
对于o
你可以从这个模式开始
- 替换
[Wolm]\+
与你的实际目标 - 在
\zs...\ze
之外添加可选上下文这样你就可以减少匹配 - 添加
\c
在模式的前面启用不区分大小写的匹配
关于vim - 在 Vim 中的替换内替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8111759/