9

我是 vim 的新手,我无法在互联网上找到如何折叠函数,我已经弄清楚如何使用 zfa} 和 zfa 折叠 C 中的参数列表)。但我不知道如何折叠评论部分。我怎么做?

第二个问题但相关,有没有办法同时折叠文件中的所有函数/参数列表/注释?

4

3 回答 3

22

您所指的功能称为“折叠”(请参阅​​ 参考资料:help usr_28)。该zf命令用于手动创建折叠,并且仅在foldmethod选项设置为“标记”或“手动”时使用。在您给出的示例中,您在由a}a)文本对象指定的区域上创建折叠(请参阅 参考资料:help usr_4.8)。

对于 C,您可以setlocal foldmethod=syntax并且折叠区域将由语法规则自动确定。这只能通过将设置放入~/.vim/ftplugin/c.vim或将以下 autocmd 放入您的~/.vimrc.

autocmd FileType c setlocal foldmethod=syntax

注意这两个都需要启用文件类型检测(filetype on),而 ftplugin 解决方案需要启用文件类型插件(filetype plugin on)。后者是前者的超集,因此您的~/.vimrc.

至于打开/关闭当前缓冲区中的所有折叠,分别是zRzM命令。

于 2009-11-16T20:02:15.303 回答
5

将以下设置添加到 ~/.gvimrc:

"folding settings
set foldmethod=indent   "fold based on indent
set foldnestmax=10      "deepest fold is 10 levels
set nofoldenable        "dont fold by default
set foldlevel=1         "this is just what i use

然后你可以用 za 切换折叠。你可以用 zM 折叠所有东西,用 zR 展开所有东西。zm 和 zr 可用于使这些折叠恰到好处。如果遇到困难,请始终记住“help :folding”中的万能帮助文件。

来源:http ://smartic.us/2009/04/06/code-folding-in-vim/

于 2012-05-17T22:37:38.077 回答
0

假设您已按照您的需要设置折叠区域,请设置foldlevel为所需的级别。

于 2009-11-16T19:56:23.973 回答