I have folding on by default, but frequently turn it off (often globally) shortly after launching vim. However, when I first start digging into a new codebase it’s nice to get an overview of what kinds of methods (and how many) are in a given file.
I use this plugin:
" Auto-fold files upon open. Disable session-wide with: <leader>nf
Bundle 'bruno-/vim-ruby-fold'
And have these additional settings in my .vimrc
"fold settings
" ------------
" toggle folding with za.
" fold everything with zM
" unfold everything with zR.
" zm and zr can be used too
" set foldmethod=syntax "fold based on syntax (except for haml below)
" set foldnestmax=10 "deepest fold is 10 levels
" set nofoldenable "dont fold by default
autocmd BufNewFile,BufRead *.haml setl foldmethod=indent nofoldenable
autocmd! FileType nofile setl foldmethod=indent nofoldenable
" Space to toggle folds.
nnoremap <Space> za
vnoremap <Space> za
" Toggles folds being enabled for this vim session
function! FoldToggle()
if(&foldenable == 1)
au WinEnter * set nofen
au WinLeave * set nofen
au BufEnter * set nofen
au BufLeave * set nofen
:set nofen
else
au WinEnter * set fen
au WinLeave * set fen
au BufEnter * set fen
au BufLeave * set fen
:set fen
endif
endfunc
nnoremap <Leader>nf :call FoldToggle()<CR>