78

如何在 Vim 中启用自动折叠? set foldmethod=syntax似乎什么也没做。

4

4 回答 4

143

要允许基于语法的折叠,请将以下内容添加到您的.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/syntax或的语言的语法文件中定义/usr/share/vim/vimXX/syntax/。但是有些语言的语法文件中没有内置折叠规则;例如 Python。对于那些语言,你需要从http://vim.sf.net下载一些可以折叠的东西。否则,您将需要使用基于缩进的折叠。为了有效地做到这一点,您可能希望将以下内容添加到您的.vimrc文件中:

set foldmethod=indent
set foldnestmax=2

其他类型的折叠

褶皱有6种:

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 的人在编辑文档时也不会维护它们。手动折叠效果很好,直到有人在源代码管理中编辑您的代码并且您的所有折叠现在都在错误的位置。

更多阅读

  1. 请参阅:help fold-methods以了解不同折叠方法的详细信息。
  2. 请参阅:help folding了解用于操作折叠的键盘命令。
  3. 请参阅有关:help folds折叠的整个主题的帮助。
于 2011-01-25T03:06:28.517 回答
3

JavaScript 折叠对我也不起作用。我发现当我设置 syntax=javaScript(大写的 S)时,它突然起作用了。

于 2015-07-01T12:50:11.703 回答
2

在这里尝试了所有解决方案,但没有一个适用于 NeoVim v0.3.1 直到我找到vim-javascript插件并且折叠开始工作。

于 2018-11-29T23:08:57.120 回答
1

在新版本的 Vim 中启用折叠的方式已经改变(我使用的是 vim 7.4)。现在您应该创建文件~/.vim/ftplugin/javascript.vim(在 linux 上)并添加代码折叠说明,如 Eric Johnson 的回答中所述。特定文件类型的文件类型检测和加载插件必须通过将其放入您的.vimrc

filetype plugin on
于 2016-08-19T11:38:32.340 回答