How do I enable automatic folding in Vim? set foldmethod=syntax
doesn't seem to do much of anything.
Open it in Vim, and place the cursor at the beginning of a paragraph. Make sure you're in normal mode, and type zf2j . After you press j , Vim will create a fold covering three lines — the line you started the fold on, and the next two lines.
Yanis. March 15, 2020. Folding is a way to hide a chunk of text, and thus unclutter the view. That comes handy when you need to focus on some other part of code, or if you want to get a quick overview of the whole file.
The problem is that when you close Vim, your artfully folded code returns to its unfolded state. The solution is quite simple - when you are ready to save your folds run the :mkview command. This will save your folds in the current buffer to your viewdir ( :h viewdir ) depending on your environment.
To expand the lines, put the cursor over the fold and hit spacebar (in vim terminology, this deletes the fold). (Side note: you may want to change the look of collapsed folds.
To allow folds based on syntax add something like the following to your .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
Syntax based folding is defined in the syntax files of the language which are located in $VIM/syntax
or /usr/share/vim/vimXX/syntax/
. But some languages do not have folding rules built into their syntax files; for example Python. For those languages you need to download something from http://vim.sf.net that does folds. Otherwise you will need to use folds based on indents. To do this effectively you will likely want to add the following to your .vimrc
file:
set foldmethod=indent set foldnestmax=2
There are 6 types of folds:
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
Personally, I only use syntax folds. Usually, I just want to fold the method and not fold every indent level. Inconsistent indenting and weirdly formatted legacy code at work often makes indent folding difficult or impossible. Adding marks to the document is tedious and people who do not use Vim will not maintain them when they edit the document. Manual folds work great until someone edits your code in source control and all your folds are now in the wrong place.
:help fold-methods
to learn the details of different fold methods.:help folding
to learn the keyboard commands for manipulate folds.:help folds
for help on the entire topic of folding.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With