[英]How do I enable automatic folds in 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/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
的整个主题的帮助,请参阅:help folds
。JavaScript 折叠对我也不起作用。 我发现当我确实设置了语法 = javaScript (带有大写的 S)时,它突然起作用了。
在新版本的 Vim 中启用折叠的方式已经改变(我使用的是 vim 7.4)。 现在您应该创建文件~/.vim/ftplugin/javascript.vim
(在 linux 上)并添加您的代码折叠指令,如 Eric Johnson 的回答中所述。 必须通过将其放入您的.vimrc
来启用特定文件类型的文件类型检测和加载插件:
filetype plugin on
在这里尝试了所有解决方案,但没有一个适用于 NeoVim v0.3.1,直到我发现vim-javascript插件和折叠开始工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.