如何在Vim中启用自动折叠?

如何在Vim中启用自动折叠? set foldmethod=syntax似乎没有做任何事情。

要允许基于语法的折叠,请在您的.vimrc添加如下内容:

 set foldmethod=syntax set foldlevelstart=1 let javaScript_fold=1 " JavaScript let perl_fold=1 " Perl let php_folding=1 " PHP let r_syntax_folding=1 " R let ruby_fold=1 " Ruby let sh_fold_enabled=1 " sh let vimsyn_folding='af' " Vim script let xml_syntax_folding=1 " XML 

基于语法的折叠在位于$ VIM /语法中的语言语法文件中定义。 但是有些语言没有内置在其语法文件中的折叠规则。 例如Python。 对于这些语言,你需要从http://vim.sf.net下载一些折叠的东西。; 否则,您将需要使用基于缩进的折叠。 为了有效地做到这一点,您可能需要将以下内容添加到.vimrc文件中:

 set foldmethod=indent set foldnestmax=2 

其他types的折叠

有6种types的折叠:

 manual manually define folds indent more indent means a higher fold level expr specify an expression to define folds syntax folds defined by syntax highlighting diff folds for unchanged text marker folds defined by markers in the text 

我个人只使用语法折叠。 通常我只想折叠该方法,而不是折叠每个缩进级别。 在工作中不一致的缩进和奇怪的格式化遗留代码经常使缩进折叠变得困难或不可能。 在文档中添加标记是很乏味的,而不使用Vim的人在编辑文档时不会对它们进行维护。 手动折叠很好地工作,直到有人在源代码pipe理中编辑你的代码,并且你所有的折叠现在都在错误的地方。

更多的阅读

  1. 请参阅:help fold-methods来了解不同折叠方法的细节。
  2. 请参阅:help folding来学习操作折叠的键盘命令。
  3. 请参阅:help folds整个话题的帮助。

JavaScript折叠也不适合我。 我发现当我设置语法= javaScript (与大写S),它突然工作。

在Vim的新版本中启用折叠的方式已经改变了(我正在使用vim 7.4)。 现在你应该创build文件~/.vim/ftplugin/javascript.vim (在linux上)并添加你的代码折叠指令,正如Eric Johnson的答案中所解释的那样。 文件types检测和加载特定文件types的插件必须通过将其放入.vimrc来启用:

 filetype plugin on