如果我有以下代码:
foo->call(bar, baz->widget);
将光标放在“baz”中的“b”或“widget”中的“w”上,如何快速删除光标处的参数?
foo->call(bar);
它可以是任何参数(第一个,最后一个或中间)。
答案 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是另一个提供aa
和ia
的插件(修复了内置文本对象的默认行为,比较TextObjectify上的讨论)
答案 4 :(得分:0)
?,进入上一个','
d /,输入要删除的下一个','
无需插件
对于模板参数,您可能需要在搜索词前加上数字:
void foo(sometype a,some_template_type
,或者您可以按'。但是您要删除许多逗号分隔符。