Yongwei Xing
Yongwei Xing

Reputation: 13441

Fold function in vim

Is there any way or tools to fold function in vim, like Visual Studio or Eclipse?

Upvotes: 87

Views: 67891

Answers (5)

codaddict
codaddict

Reputation: 454912

Vim folding commands
---------------------------------
zf#j creates a fold from the cursor down # lines.
zf/ string creates a fold from the cursor to string .
zj moves the cursor to the next fold.
zk moves the cursor to the previous fold.
za toggle a fold at the cursor.
zo opens a fold at the cursor.
zO opens all folds at the cursor.
zc closes a fold under cursor. 
zm increases the foldlevel by one.
zM closes all open folds.
zr decreases the foldlevel by one.
zR decreases the foldlevel to zero -- all folds will be open.
zd deletes the fold at the cursor.
zE deletes all folds.
[z move to start of open fold.
]z move to end of open fold.

Source: Vim docs.

Upvotes: 166

Neg_EV
Neg_EV

Reputation: 2060

Vim has excellent folding support. There is good documentation in the vim help system. Just open vim and do

:help usr_28.txt 

After reading that you can also read

:help folding

for some more information.

Upvotes: 6

bhekman
bhekman

Reputation: 3277

Yes. VIM has exceptional folding capabilities. I don't like learning too many controls, I prefer automation, so here is what I personally use:

In my .vimrc:

set foldmethod=indent
set foldlevel=1
set foldclose=all

This automatically folds files that you open, based on indent, for everything indented for more than 1 level. The foldclose option makes the fold automatically re-close after I navigate out of the fold.

In-file Controls:

zo - opens folds
zc - closes fold
zm - increases auto fold depth
zr - reduces auto fold depth

And if you ever get annoyed with the folds, use

: set foldmethod=syntax

or press:

zR

to make them all go away.

Upvotes: 86

Paul
Paul

Reputation: 13238

:set foldmethod=syntax

should fold all functions and other blocks automatically, if you have syntax file for your language.

Upvotes: 27

Bullet Tooth Tony
Bullet Tooth Tony

Reputation: 43

yes, it is bound to the 'z' key, e.g. zO opens all folds. see ":help fold" in vim for more information. You can do folding according to very simple rules, like indentation, or according to the code syntax.

Upvotes: 2

Related Questions