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

Eri*_*son 73 javascript vim perl folding

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

Eri*_*son 136

要允许基于语法的折叠,请在以下内容中添加以下内容.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
Run Code Online (Sandbox Code Playgroud)

基于语法的折叠在语言的语法文件中定义,该文件位于$ VIM /语法中.但是有些语言的语法文件中没有内置折叠规则.例如Python.对于这些语言,您需要从http://vim.sf.net下载折叠的东西.否则,您将需要使用基于缩进的折叠.要有效地执行此操作,您可能需要将以下内容添加到.vimrc文件中:

set foldmethod=indent
set foldnestmax=2
Run Code Online (Sandbox Code Playgroud)

其他种类的折叠

折叠有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
Run Code Online (Sandbox Code Playgroud)

我个人只使用语法折叠.通常我只想折叠方法而不是折叠每个缩进级别.在工作中不一致的缩进和奇怪格式化的遗留代码经常使缩进折叠变得困难或不可能.在文档中添加标记很繁琐,不使用Vim的人在编辑文档时不会对它们进行维护.手动折叠很有效,直到有人在源代码管理中编辑您的代码,并且您的所有折叠现在都在错误的位置.

更多阅读

  1. 请参阅:help fold-methods了解不同折叠方法的详细信息.
  2. 请参阅:help folding了解用于操纵折叠的键盘命令.
  3. 请参阅有关:help folds折叠整个主题的帮助.

  • 嗯......那很快. (8认同)
  • 您是否真的在发布问题的一分钟内输入了所有这些内容?+1清晰度,细节和速度! (8认同)