1

I have some configuration in my .vimrc governing the initial folding strategy. Sometimes, I am looking to restore the initial state and would like a :refold command or something, which restores the initial state.

Is there some built-in way to do this?

  • Doesn't :e! do what you want? – Christian Brabandt Nov 1 '19 at 9:27
  • @ChristianBrabandt This does not seem to work. Rather something like :enew | e#. But I doubt it should be recommended. – Matt Nov 1 '19 at 9:39
  • @Matt :e! has always reset the folds for me. not sure why you would recommend opening the same file in a different window so. – Christian Brabandt Nov 1 '19 at 9:58
  • @ChristianBrabandt Perhaps, you make use only of za and other such commands which influence only individual folds, but not any of the window folding options. But if you ever use zR, or something like that, then its effect of setting local foldlevel will remain after :e! – Matt Nov 1 '19 at 10:35
  • 2
    Also zX might be helpful. – Christian Brabandt Nov 1 '19 at 10:56
1

would like a :refold command`

command! -range -addr=windows Refold call ResetWinOpts(<line1>, <line2>, ['fdm', 'fdl', ...])
command! RefoldAll tabdo %Refold

" reset options through a window-range to global values
function! ResetWinOpts(winid1, winid2, opts)
    call execute(printf("%s,%swindo setl %s<", a:winid1, a:winid2, join(a:opts, "< ")))
endfunction

If you're only interested in undoing all effects of manual folding, like za/zo/zc etc. then, as @ChristianBrabandt suggested in the comments, the command zX will do this for you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.