Vim,是否可以在寄存器内搜索和替换内容?

4
例如,我的一个寄存器 "a" 包含内容 "vim is awesome",我想在寄存器 "a" 中将 "awesome" 替换为 "cool"。
顺便说一下,我不想使用寄存器的内容作为搜索/替换模式。我知道我可以使用CTRL-R a在命令模式下粘贴寄存器a的内容。
2个回答

10
也许可以这样做。基本上是将寄存器a中的值通过替换命令发送,并将其放回寄存器(具有正确的寄存器类型)。
:call setreg('a', substitute(getreg('a'), 'pat', 'sub', 'g'), getregtype('a'))

或者如果你完成后不关心regtype

:let @a=substitute(@a, 'pat', 'sub', 'g')
更简单的方法可能会更好。

1
感谢您提供的好解决方案。 - user3663904
我仍在想是否有任何“vim命令”可以不使用函数。(抱歉,vim函数没有任何问题 :)) - user3663904
@user3663904 这是一个vim命令。我不确定你的意思。你是指正常模式命令吗?还是其他什么? - FDinoff

2

你可以使用"ap将寄存器的内容粘贴到缓冲区中,进行修改后,再使用"ad重置该寄存器的内容并删除已粘贴的文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接