如何在Vim中启用自动折叠? set foldmethod=syntax
似乎没有做任何事情。
答案 0 :(得分:134)
要允许基于语法的折叠,请在.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
折叠有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
以获取有关折叠整个主题的帮助。答案 1 :(得分:3)
JavaScript折叠对我来说也不起作用。我发现设置syntax = javaScript (使用大写字母S),它突然发挥作用。
答案 2 :(得分:1)
在新版本的Vim中启用折叠的方法已经改变(我正在使用vim 7.4)。现在你应该创建文件~/.vim/ftplugin/javascript.vim
(在linux上)并添加代码折叠指令,如Eric Johnson的回答中所述。必须通过将其放入.vimrc
:
filetype plugin on
答案 3 :(得分:1)
在这里尝试了所有解决方案,但没有一个与NeoVim v0.3.1一起使用 直到我找到vim-javascript插件并开始折叠。