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

In Vim, paste over text between two parenthesis?

我发现自己经常做的事情是在两个括号之间拉出文本并将其粘贴到另一对括号上。例如:

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 中的文本上?

将光标移到 foo 的第一个括号上,然后使用 y% 拉出所有文本,直到匹配的括号。 (如果您希望直观地看到您正在拉出的文本,您也可以使用 v%y。)

然后将光标移到 bar 的第一个括号上,然后使用 v%p。它选择文本直到匹配的括号然后粘贴到它上面。

抽取第一对括号的内容:

yib

可视化select第二对括号的内容并放:

vibp

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

yi) 提取括号内的文本

"_di)P使用空寄存器删除括号内的文本并粘贴文本,vi)p也有效并避免了空寄存器

虽然唯一改变的是函数名称,因此您也可以直接拉出该行并使用 cw(更改词)将 foo 更改为 bar。

我用vim-scripts/ReplaceWithRegister.

照常复制 yi(

粘贴 gri(

使用它转到最后一个括号 shift + 5

为第一个括号按两次 5。