2012-05-17 39 views
7

是否有命令来复制完整的函数? (不是通过鼠标选择)Vim:函数副本

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

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

回答

2

如果您在编程语言中使用VIM和函数体,您恰好被大括号括起来,您可以将光标置于其中一个大括号上并键入y%

+0

如果你想获得的方法声明为好,你可能想用'V'前缀你的命令,所以它成为'v%y' – tannerli

2

大括号的语言(如Java)可以使用]m命令用于导航到功能;一些文件类型也为此定义]]。有了这个,你可以使用[mV]My(转到函数的开始,启动linewise visual模式,转到函数结束,放大)。

许多文件类型也定义了函数的折叠。这样,您可以使用zCyyzO(关闭所有折叠,将光标下的整个折叠部分拉开,打开折叠)。

22

这是我在JavaScript中做什么,PHP:

va{Vy 
  1. 将光标放在某处我的方法,
  2. va{直观地选择代码块,
  3. V打开从字符方式到行方式的选择,
  4. y to yank

如果你是太深,直到你选择你想要什么va{只选择你可以做更多a{你的函数的一部分。

+1

'雅{'简化了您的序列。这适用于任何基于括号的语言。 –

+0

'雅{'只是把括号和里面的东西拉开。还需要额外的步骤来抽取'function myFunc(args)'部分。 – romainl

+3

的确,但您在这里假设前括号与函数签名中的那一行在同一行上。 –