The command zfa} collapses (folds) a C block using the } symbol as guide.
The following code maps the Spacebar to a function that folds/unfolds the current block (add this to ~/.vimrc), based on this.
"Fold coloring
hi Folded ctermfg=white ctermbg=NONE
fun! ToggleFold()
if foldclosed('.') < 0
". foldclose
:execute "normal zfa}<cr>"
else
. foldopen
endif
" Clear status line
echo
endfun
" Map fold/unfold function to Space key.
"nmap <space> zfa}<cr>
"nmap <space> :call ToggleFold()<cr>
noremap <space> :call ToggleFold()<cr>
Here there is a more sophisticated function for folding.
vmap <space> zf
vmap <space> zf
" inspired by Max Ischenko's http://www.vim.org/tips/tip.php?tip_id=108
function ToggleFold()
if foldlevel('.') == 0
" No fold exists at the current line,
" so create a fold based on braces
let x = line('.') " the current line number
normal 0
call search("{")
normal %
let y = line('.') " the current line number
" Create the fold from x to y
execute x . "," . y . " fold"
else
" Delete the fold on the current line
normal zd
endif
endfunction
nmap <space> :call ToggleFold() <cr>
No comments:
Post a Comment