如何在 vim 中快速复制/删除整个函数(包括函数名称)?

如何在 vim 中快速复制/删除整个函数(包括函数名称)?

我需要通过 vim 删除/复制如下所示的函数,包括函数声明 (function foo())。我尝试了类似 da{ 的建议,但无法删除/复制“function foo()”部分。

function foo() {
//can be a blank line here
    console.log("Hello"); //cursor is at here
//...some other code
    return a;
}

答案1

只要{与定义本身在同一行function,就可以强制逐行运动(:help o_V):dVa{

默认情况下,[mmotion 使用{ ... }搜索,因此在单独一行上定义函数也无济于事。但有些文件类型会重载它(或 motion [[,例如 Vimscript 文件类型 for :function... :endfunction),然后]Md[m就可以正常工作。

另一个(逃避)答案是视觉模式,您可以逐步优化选择以覆盖您想要的内容(例如,Va{ok包括上方的线条{)。但这当然通常需要大量击键 :-(

像我的插件CountJump 插件或者textobj-用户插件让您定义自己的动作和文本对象。因此,只需进行少量自定义工作,您就可以定义自己需要的内容,将其分配给几个键,然后像使用内置键一样使用。

相关内容