In my .vimrc
I've put set foldmethod=syntax
to enable folding of methods etc. However, I don't like the default that everytime I open a file, the whole thing is folded. Is there a way to enable foldmethod
, yet have files unfolded when I open them?
-
I found this [article](https://vim.fandom.com/wiki/All_folds_open_when_opening_a_file) helpful to pick the right answer. – M Imam Pratama Oct 23 '21 at 06:29
9 Answers
set foldlevel=99
should open all folds, regardless of method used for folding. With foldlevel=0
all folded, foldlevel=1
only somes, ... higher numbers will close fewer folds.

- 60,248
- 49
- 165
- 242
-
9but this will lead to a problem: pressing `zm` will not close all folds, unless you enter it 99 times – bitboxer Apr 05 '13 at 07:20
-
24You could also `set nofoldenable`, which temporarily disables folding when you open the file, but all folds are restored as soon as you hit `zc` – 79E09796 May 30 '13 at 08:22
-
1To set the exact foldlevel you can use `:autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))` (taken from [an answer on superuser](http://superuser.com/questions/567352)). – Matthew Strawbridge Sep 13 '13 at 21:16
-
9@bitboxer _"but this will lead to a problem: pressing zm will not close all folds"_ Use `zM` to close all folds. – wisbucky Jun 03 '14 at 21:34
-
1To expand on wisbucky's reply, `99` is not a problem since `zM` indeed completely corrects its effects. See `:help foldlevel` and `:help zm`. `foldlevel=0` is a buffer value, defaulting to `0`, and easily reset, as witbucky points out, with `zM`. To add to 79E09796's great idea, `zi` is also nice, inverting `foldenable`, which remembers your fold choices. – Brady Trainor Aug 20 '14 at 21:48
-
2
-
You can put this in your .vimrc
:
au BufRead * normal zR
It declares an automatic command (au
), triggered when a buffer is read (BufRead
), matching all files (*
) and executes the zR
(opens all folds) command in normal mode.

- 7,809
- 1
- 30
- 30
-
16For some reason this only partially unfolded the file. I had to use `BufWinEnter` instead. – Kelvin Jul 26 '12 at 18:26
-
-
4
-
set nofoldenable
Adding this to your .vimrc
will temporarily disable folding when you open the file, but folds can still be restored with zc

- 2,120
- 1
- 20
- 33
-
3Useful - but when you zc a fold it then hides all other folds also all-at-once. I think i like personally defaulting to foldlevel=99 as it keeps 'zc' then localized to individual chunk you are looking at when invoked. – wom May 11 '18 at 14:30
In .vimrc
add an autocmd for BufWinEnter
to open all folds automatically like this:
autocmd BufWinEnter * silent! :%foldopen!
That tell vim to execute the silent :%foldopen!
after opening BunWinEnter
event (see :h BufWinEnter
). The silent %foldopen!
will execute foldopen
on the whole buffer thanks to the %
and will open all folds recursively because of the !
. Any eventual error message will be suppressed by silent
. (You could get error messages like E490: No fold found
if the buffer actually didn't contain any fold yet)
Note: You could use BufRead
instead of BufWinEnter
but then if the file has a modeline that enables the folding that will override this autocmd. I mean BufRead
autocmds run before the modeline is processed and BufWinEnter
will run them after. I find the later to be more useful

- 21,435
- 13
- 113
- 151
-
-
using `autocmd` here allows to open all folds for *all files* using a modeline it just to apply to that file and assumes that you can modify the file (it could be a read only file). The modeline would look like `# vim: set foldlevel=99` at the top or bottom of the file – RubenLaguna Oct 05 '18 at 08:14
-
You can add
set foldlevelstart=99
to your .vimrc file, and it will start editing any new file with all folds open.

- 41,293
- 8
- 87
- 103
If you want a way to have it display unfolded as soon as it is opened, you can use set foldlevelstart=99
as a lot of answers explained.
But, if you just want to see them unfolded, you can just press zi
and it will unfold everything. Another, zi
will close them back.

- 563
- 1
- 6
- 25
You can open unfolded file when you put set nofoldenable
into your .vimrc file.

- 26
- 3
autocmd BufReadPost * silent! :%foldopen!
This worked best for me. After a buffer gets opened all folds are opened. This opens them to the correct level.
The set foldenable
method was not good, because if I choose to close one fold level, it enabled folding again, and folded every thing to 0 level, instead of just going down one level on the one I activated.

- 43
- 1
- 4
You could map it to keys to enable it. For example,
nmap ,f :set foldmethod=syntax<CR>
Then while in normal mode hit the ",f" key combination

- 100
- 3