使用vi/vim替换寄存器中的文本

8

学习 vi/vim 和 Linux,学习使用 :reg:let。我的问题是如何替换和编辑寄存器中的文本?我已经在网上搜索过,在 vi/vim 帮助中也做了一些尝试,但没有得到预期的结果...

Ex:

Register a:
"1.  This is a sentence.  This is another sentence.  This is yet another sentence."

:.s/This/That/g - 将文件中每行出现的所有"This"替换为"That"。

如何在寄存器a中将"This"替换为"That"?

感谢您提供建议或答案...

Martin


5
  1. :h getreg():获取指定寄存器中的文本内容。
  2. :h getregtype():获取指定寄存器中的文本类型。
  3. :h substitute():在文本中替换匹配的模式为指定的文本。
  4. :h setreg():将文本设置到指定的寄存器中。
- jeremysprofile
2个回答

4

使用\=可以替换一个表达式,该表达式可以是getreg()函数的值。

因此,要将This替换为寄存器a的内容:

:%s/This/\=getreg("a")/g

或者
:%s/This/\=@a/g

你可以使用 "at" 从寄存器中获取内容。


3

我不确定这是否完全符合您的要求,但可以试一试 :)

:let @a = substitute(@a, "This", "That", "g")

要了解更多详细信息,请键入

:h substitute()

非常感谢您所有的回复。这正是我想要做的。 - Martin Kuester

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