Vim:功能复制

Tam*_*min 10 vim

是否有复制完整功能的命令?(不是通过鼠标选择)

例如:10yy- >将从10光标位置复制线条.
我不知道函数的行号,但想要复制整个函数.

是否有任何复制整个功能的命令?

rom*_*inl 31

这是我在JavaScript和PHP中所做的:

va{Vy
Run Code Online (Sandbox Code Playgroud)
  1. 将光标放在我的方法中的某个位置,
  2. va{ 在视觉上选择代码块,
  3. V 将选择从字符方式转换为逐行方式,
  4. y 猛拉

如果你太深,va{只选择一部分功能,你可以做更多,a{直到你选择你想要的.

  • @romainl 如果左花括号位于函数签名下方的行上,则以下内容仍然有效:`va{Voky`。`o` 将选择光标切换到选择的*顶部*,而不是底部,允许您将选择的顶部向上移动一行,从而选择整个功能。 (4认同)
  • 实际上,但您在此假设开始括号与函数签名中的开放括号位于同一行. (3认同)
  • 是的,这就是我编写代码的方式.但是当开头括号在声明下面的线上时,问题难道不会变得有点困难吗?因为`ya {`仍然只会拉动`{...}`而不是声明.如果这是目标,问题就解决了.非常简单地.但是如果你想要把整个东西(`function functionName(){}`)拉出来,这就是我理解提问者想做的事情,`ya {`还不够.由于开口支架在同一条线上,我认为使用"V"是最简单的解决方案.有了下面一行的开口括号,也许可以在声明上做"xyy"和`j"Xy%`? (3认同)
  • `ya{` 简化了你的序列。这适用于任何基于括号的语言。 (2认同)
  • `ya{` 只拉括号和里面的东西。还需要一个额外的步骤来提取 `function myFunc(args) ` 部分。 (2认同)

sat*_*oru 6

如果您使用的是 VIM,并且您碰巧用大括号括起来的编程语言中的函数体,则只需将光标放在其中一个大括号上并键入y%.

  • 如果你还想获得方法声明,你可能想在你的命令前面加上一个 `V`,这样它就变成了 `V%y` (2认同)

Art*_* S. 5

鉴于您的函数被换行符包围,您可以使用yip

这将:
y- 猛拉
i- 内部
p- 段落