【发布时间】:2010-12-17 04:44:12
【问题描述】:
我是 vim 的新手,我无法在互联网上找到如何折叠函数,我已经弄清楚如何使用 zfa} 和 zfa 折叠 C 中的参数列表)。但我不知道如何折叠 cmets 部分。我该怎么做?
第二个问题但相关,有没有办法同时折叠文件中的所有函数/参数列表/cmets?
【问题讨论】:
我是 vim 的新手,我无法在互联网上找到如何折叠函数,我已经弄清楚如何使用 zfa} 和 zfa 折叠 C 中的参数列表)。但我不知道如何折叠 cmets 部分。我该怎么做?
第二个问题但相关,有没有办法同时折叠文件中的所有函数/参数列表/cmets?
【问题讨论】:
假设您已按照自己的意愿设置折叠区域,请将 foldlevel 设置为所需的级别。
【讨论】:
您所指的功能称为“折叠”(请参阅:help usr_28)。 zf 命令用于手动创建折叠,并且仅在foldmethod 选项设置为“标记”或“手动”时使用。在您给出的示例中,您在a} 和a) 文本对象指定的区域上创建折叠(请参阅:help usr_4.8)。
对于 C,您可以setlocal foldmethod=syntax,折叠区域将由语法规则自动确定。这只能通过将设置放入 ~/.vim/ftplugin/c.vim 或将以下 autocmd 放入您的 ~/.vimrc 来对 C 文件进行。
autocmd FileType c setlocal foldmethod=syntax
注意两者都需要启用文件类型检测 (filetype on),而 ftplugin 解决方案需要启用文件类型插件 (filetype plugin on)。后者是前者的超集,因此您的~/.vimrc 中不需要这两个命令。
至于打开/关闭当前缓冲区中的所有折叠,它们是 zR 和 zM 分别命令。
【讨论】:
将以下设置添加到 ~/.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”中的万能帮助文件。
【讨论】: