如何替换替换内部?
我知道你可以将光标下的当前单词放到替换中,但是我想在将它作为输出之前执行替换。
例如:
o
更改为0
(仅适用于该字词)一个真实世界的例子(来自我的vim历史)正在使用Latex文档并正在运行
%s/\\begin{table}\[h\]/\\begin{table}\[H\]/c
我正在复制字符串只是为了进行微小的更改。
答案 0 :(得分:2)
将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
都匹配,但不匹配{{1}等)。 amool
标记了替换的匹配的开头,\zs
结束\ze
替换匹配(\=substitute(submatch(0), 'o', '0', 'g')
和\zs
之间),但将\ze
替换为0
你可以从这种模式开始
o
替换为您的实际目标[Wolm]\+
之外添加可选上下文,以便您可以减少匹配\zs...\ze
以启用不区分大小写的匹配答案 1 :(得分:0)
在编写:sub
命令时尝试键入 Ctrl - f 。这将打开命令行窗口,允许您使用vim的普通模式编辑命令。如果在此模式下按Enter键,将执行当前行。如果按 Ctrl - c ,您将退回到命令行模式,并将当前行作为当前文本。
命令行窗口也是您在意外键入q:
时发生的情况。 (我知道在理解它的用途之前我做了很多。它也有你之前命令的历史记录。也可以在/
搜索期间尝试相同的操作或输入q/
。
另见:help cmdline-window