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?
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.
zm
will not close all folds, unless you enter it 99 times –
Tojo set nofoldenable
, which temporarily disables folding when you open the file, but all folds are restored as soon as you hit zc
–
Lollar :autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))
(taken from an answer on superuser). –
Sift zM
to close all folds. –
Mercia 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. –
Shalne vim.wo.foldlevel = 99
–
Diphthong 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.
BufWinEnter
instead. –
Tapia zR
–
Soubise zM
to close ALL the folds –
Soubise if has("autocmd") ... endif
–
Hippogriff set nofoldenable
Adding this to your .vimrc
will temporarily disable folding when you open the file, but folds can still be restored with zc
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
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 –
Ilene You can add
set foldlevelstart=99
to your .vimrc file, and it will start editing any new file with all folds open.
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.
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
You can open unfolded file when you put set nofoldenable
into your .vimrc file.
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.
© 2022 - 2024 — McMap. All rights reserved.