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


Answers:


140

要允许基于语法的折叠,请在您的内容中添加以下内容.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中的语言语法文件中定义。但是某些语言的语法文件中没有内置折叠规则。例如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折叠整个主题的帮助。

8
您真的在问题发布后一分钟内输入了所有这些内容吗?+1表示清晰度,细节和速度!
卡斯卡贝尔2011年

感谢您分享经验!您不知道如何启用C ++折叠吗?
Vitaly Isaev 2014年

供参考:测试了C / C ++不需要其他let ...=1命令,仅此而已set foldmethod=syntax。即某些语言不需要let命令。
Johnny Wong,

3

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


1
呵呵,我做到了,突然之间所有的颜色都消失了,猜想它并不适合所有人。:) vim version 8
ArchNoob

最初,我尝试了一下,但是它没有折叠任何东西,并且没有使用语法高亮显示。然后我放回语法= javascript,突然所有功能折叠了。奇怪的。
资格

1

在新版本的Vim中启用折叠的方式已更改(我正在使用vim 7.4)。现在,您应该创建文件~/.vim/ftplugin/javascript.vim(在Linux上),并按照Eric Johnson的答案中的说明添加代码折叠说明。必须通过将以下文件放入您的文件夹中来启用特定文件类型的文件类型检测和加载插件.vimrc

filetype plugin on

1

在这里尝试了所有解决方案,但没有一个可以与NeoVim v0.3.1一起使用,直到我发现vim-javascript插件和折叠开始起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.