如果我有一句话 - “我认识一个名叫Ted的人喜欢// ^ $” - 或者基本上是一个有很多字符的句子,我觉得不会逃避,我想插入那句话的副本不同的名字(例如John Mary Bob)......
for循环可以通过复制句子,将其粘贴为下一行,然后将名称删除来完成此操作吗?我如何告诉它粘贴的位置?
我还可以首先粘贴名称列表,然后将名称中的句子分开 - 例如:s/^/I know a person named /
,但我发现如果有很多文字有很多字符可以逃脱,我' ll可能会在某个地方出错,浪费时间仔细检查表达式。
那么,是否有更简单的方法从句子中获取内容并将其放入替代命令中?
答案 0 :(得分:1)
您可以使用vim中的宏执行此操作。 点击此处查看vim宏的解释:http://vim.wikia.com/wiki/Macros。 它比使用正则表达式更容易。
答案 1 :(得分:0)
像Chiel92所说,宏是最简单的方法。假设您有一个如下所示的文本文件:
I know a person named XXX who like //^$
John
Mary
Bob
就我个人而言:
:1<enter>"iyy
i
缓冲区的内容,然后将XXX替换为该行上的名称:
:3<enter>
qm
"od$
"ipkdd
:s/XXX/^Ro/
j
q
对于每个名称行,您现在可以重播宏:@m
或@@
注意:在制作宏并重放问题时,我总是觉得查看录制注册表的内容会很有帮助。您只需^R^Rm
即可查看录制的所有命令。