我该如何在Vim中启用自动折叠?set foldmethod=syntax
似乎没有什么作用。
我该如何在Vim中启用自动折叠?set foldmethod=syntax
似乎没有什么作用。
如果要按照语法折叠,请在您的.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
来获取关于整个折叠主题的帮助。我也遇到了 JavaScript 折叠不起作用的问题。后来发现当我输入 set syntax=javaScript(注意大写字母 S),它突然就可以工作了。
vim 8
版本。 - ArchNoobset syntax=javaScript
才能使其真正检测到 JavaScript,然后折叠立即被激活(因为我已经在我的 init.vim
文件中设置了 set foldmethod=syntax
,我想)。现在开始将此放入 init.vim
文件,但仅在检测到 JS 文件的情况下。 - Alexandre~/.vim/ftplugin/javascript.vim
,并按照Eric Johnson的答案中所述添加代码折叠说明。必须通过将以下内容放入您的.vimrc
中来启用特定文件类型的文件类型检测和加载插件:filetype plugin on
let ...=1
命令,只需要set foldmethod=syntax
就足够了。也就是说,有些语言不需要let
命令。 - Johnny Wong