如何在 Vim 中启用自动折叠? set foldmethod=syntax
似乎什么也没做。
4 回答
要允许基于语法的折叠,请将以下内容添加到您的.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 的人在编辑文档时也不会维护它们。手动折叠效果很好,直到有人在源代码管理中编辑您的代码并且您的所有折叠现在都在错误的位置。
更多阅读
- 请参阅
:help fold-methods
以了解不同折叠方法的详细信息。 - 请参阅
:help folding
了解用于操作折叠的键盘命令。 - 请参阅有关
:help folds
折叠的整个主题的帮助。
JavaScript 折叠对我也不起作用。我发现当我设置 syntax=javaScript(大写的 S)时,它突然起作用了。
在这里尝试了所有解决方案,但没有一个适用于 NeoVim v0.3.1 直到我找到vim-javascript插件并且折叠开始工作。
在新版本的 Vim 中启用折叠的方式已经改变(我使用的是 vim 7.4)。现在您应该创建文件~/.vim/ftplugin/javascript.vim
(在 linux 上)并添加代码折叠说明,如 Eric Johnson 的回答中所述。特定文件类型的文件类型检测和加载插件必须通过将其放入您的.vimrc
:
filetype plugin on