nnoremap ]] :call Go_jump('/^\(func\\|type\)') nnoremap [[ :call Go_jump('?^\(func\\|type\)') nnoremap ]m :call Go_jump('/^\s*\(func\\|type\)') nnoremap [m :call Go_jump('?^\s*\(func\\|type\)') if exists('*Go_jump') | finish | endif fun! Go_jump(motion) range let cnt = v:count1 let save = @/ " save last search pattern mark ' while cnt > 0 silent! exe a:motion let cnt = cnt - 1 endwhile call histdel('/', -1) let @/ = save " restore last search pattern endfun