【发布时间】:2011-06-14 22:43:13
【问题描述】:
如何在 Vim 中启用自动折叠? set foldmethod=syntax 似乎什么也没做。
【问题讨论】:
标签: javascript perl vim folding
如何在 Vim 中启用自动折叠? set foldmethod=syntax 似乎什么也没做。
【问题讨论】:
标签: javascript perl vim folding
要允许基于语法的折叠,请将以下内容添加到您的 .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 或/usr/share/vim/vimXX/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 的人在编辑文档时也不会维护它们。手动折叠效果很好,直到有人在源代码管理中编辑您的代码并且您的所有折叠现在都在错误的位置。
:help fold-methods 了解不同折叠方法的详细信息。:help folding 了解用于操作折叠的键盘命令。:help folds 以获取有关折叠的整个主题的帮助。【讨论】:
let ...=1命令,只需要set foldmethod=syntax就够了。即某些语言不需要let 命令。
let 设置是什么?我在任何地方都找不到它。
JavaScript 折叠也不适合我。我发现当我执行 set syntax=javaScript(大写的 S)时,它突然起作用了。
【讨论】:
vim version 8.
在这里尝试了所有解决方案,但没有一个适用于 NeoVim v0.3.1 直到我找到vim-javascript 插件并且折叠开始工作。
【讨论】:
set syntax=javaScript 才能真正检测到 JavaScript,然后立即激活折叠(因为我的 init.vim 文件中已经有 set foldmethod=syntax,我想)。现在将其放入init.vim 文件中,但仅限于检测到 JS 文件的情况。
在新版本的 Vim 中启用折叠的方式已经改变(我使用的是 vim 7.4)。现在您应该创建文件~/.vim/ftplugin/javascript.vim(在 linux 上)并添加代码折叠说明,如 Eric Johnson 的回答中所述。必须通过将其放入您的 .vimrc 来启用特定文件类型的文件类型检测和加载插件:
filetype plugin on
【讨论】: