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

时间:2011-01-25 03:05:23

标签: javascript perl vim folding

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

4 个答案:

答案 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的人在编辑文档时不会对它们进行维护。手动折叠很有效,直到有人在源代码管理中编辑您的代码,并且您的所有折叠现在都在错误的位置。

更多阅读

  1. 请参阅:help fold-methods了解不同折叠方法的详细信息。
  2. 请参阅:help folding以了解操纵折叠的键盘命令。
  3. 请参阅: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插件并开始折叠。