关于javascript:如何在Vim中启用自动折叠?

How do I enable automatic folds in Vim?

如何在Vim中启用自动折叠? set foldmethod=syntax似乎没有做任何事情。


要允许基于语法的折叠,请在.vimrc中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
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文件中:

1
2
set foldmethod=indent
set foldnestmax=2

其他种类的折叠

折痕有6种:

1
2
3
4
5
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折叠对我也不起作用。我发现当我设置了语法= javaScript(大写的S)时,它突然起作用了。


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


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

    1
    filetype plugin on