抽出所有函数声明

抽出所有函数声明

我经常要做的事情是确保在文件顶部的 C 代码中拥有所有函数的原型。有什么方法可以使用 vi/vim 快速选择 .c 文件中的所有函数声明,以便我可以将它们拉出并粘贴到文件顶部?

请注意,我使用带有内联参数的单行函数声明,因此每个声明始终是一行。

答案1

从第一个函数上方开始,然后使用 跳转到左大括号]M。现在,您可以使用]}]M( ]}= 右大括号,然后再次)跳转到下一个]M,这有点啰嗦,因此请将其映射到 f 键:

:nmap <F9> ]}]M

如果你使用“金发姑娘”样式缩进,例如:

void foo (int bar) {

这会将您带到与签名相同的行——假设它们都在一行上。如果您使用稍微愚蠢但更常见的 K&R、Allman 或 GNU 样式,那么您就只剩下一行了,在这种情况下您实际上想要:

:nmap <F9> ]}]Mk

k向上移动一行。在第一个函数中,将行拉入命名缓冲区,我将使用“p”作为原型,所以"pyyyy代表“拉行”)。在后续功能中,您想要附加通过将名称大写来添加到此缓冲区:"Pyy

如果您确信所有签名都在一行上,则可以将其添加到功能键 nmap 中。

:nmap <F9> ]}]Mk"Pyy

如果没有,您可以将其映射到一个单独的键,并在继续时适当地使用您的大脑;您必须仔细观察并手动粘贴多行符号。

获得所有这些后,您可以粘贴该缓冲区"pp- 第二个 p 表示“粘贴缓冲区”。如果您使用金发姑娘风格,您现在需要:s/ {$/;/这些线条。

相关内容