在Vim中,如何粘贴两个括号之间的文本?

7

我经常会做的一件事情是将两个括号之间的文本复制,然后粘贴到另一组括号中。例如:

foo(int a, int b, int c)
bar(int d, int e)

变成

foo(int a, int b, int c)
bar(int a, int b, int c)

在 Vim 中,是否有一种快速的方法可以从 foo 中复制文本并将其粘贴到 bar 中的文本上?
5个回答

15

取出第一对括号中的内容:

yib

选中第二对括号内的内容并放置:

vibp

这个主题有一个Vimcast的视频:从可视模式粘贴 - Peter Rincker

12

一种方法是在foo的参数中使用yi),在bar的参数中使用"_di)P

yi)复制圆括号内的文本

"_di)P使用空寄存器删除圆括号内的文本,并粘贴该文本,vi)p也可行且避免使用空寄存器

唯一的变化是函数名,因此您也可以复制该行并使用cw(更改单词)将foo更改为bar。


2
@DirkHorsten 我添加了简要的解释。 - Jason

4

将光标移到foo的第一个括号上,然后使用y%命令复制直到匹配的括号处所有文本。如果你更喜欢在可视化界面中看到复制的文本,也可以使用v%y

然后将光标移到bar的第一个括号上,使用v%p命令。它会选择直到匹配的括号处的文本并将其粘贴覆盖。


1

1
使用shift + 5快捷键可以跳转到最后一个括号。
按两次5可跳转到第一个括号。

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