删除Vim中函数参数的最快方法

时间:2011-01-17 03:20:50

标签: vim

如果我有以下代码:

foo->call(bar, baz->widget);

将光标放在“baz”中的“b”或“widget”中的“w”上,如何快速删除光标处的参数?

foo->call(bar);

它可以是任何参数(第一个,最后一个或中间)。

5 个答案:

答案 0 :(得分:10)

使用我的omap-param plugin,只需输入di,da,

它不会受到其他括号的困扰。例如,在f(a+g(42, "string")), foobar)中,从“a”到“g”,da,只会在{f}中留下foobar

答案 1 :(得分:6)

对于第一个参数,此键组合转到左括号,并删除下一个逗号之前的所有内容,包括后面的空格:

T(df,x

对于中间参数,此键组合将转到上一个逗号,并将其删除,直到下一个逗号:

F,dt,

对于最后一个参数,此键组合转到上一个逗号,并删除它和所有内容直到右括号:

F,dt)

- 或 -

您可以编写自己的宏来执行此类操作。类似的例子是here

答案 2 :(得分:2)

vim-argumentative是另一个插件选项,可提供a,i,个文本对象等。

答案 3 :(得分:2)

targets.vim是另一个提供aaia的插件(修复了内置文本对象的默认行为,比较TextObjectify上的讨论)

答案 4 :(得分:0)

?,进入上一个','

d /,输入要删除的下一个','

无需插件

对于模板参数,您可能需要在搜索词前加上数字:

void foo(sometype a,some_template_type b,sometype c)

,或者您可以按'。但是您要删除许多逗号分隔符。