diff --git a/.config/vim/vimrc.d/40-keys.vim b/.config/vim/vimrc.d/40-keys.vim index 5828c1e..f439269 100644 --- a/.config/vim/vimrc.d/40-keys.vim +++ b/.config/vim/vimrc.d/40-keys.vim @@ -276,9 +276,21 @@ vnoremap < n 'n'. (match(&fdo, 'search') > -1 ? 'zv' : '') .'zz' -noremap N 'N'. (match(&fdo, 'search') > -1 ? 'zv' : '') .'zz' +" TODO: This does not trigger hlsearch +function! s:CenterNext(count, command) + let l:foldopen = match(&foldopen, 'search') > -1 ? 'zv' : '' + + " Search count (i.e. [5/10]) will not display with 'lazyredraw' + let l:lazyredraw_bkp = &lazyredraw + set nolazyredraw + + execute 'normal! ' .. a:count .. a:command .. l:foldopen .. 'zz' + + let &lazyredraw = l:lazyredraw_bkp +endfunction +map n call CenterNext(v:count1, 'n') +map N call CenterNext(v:count1, 'N') + cnoremap "" . \ (getcmdtype() == '/' \|\| getcmdtype() == '?' \ ? (match(&fdo, 'search') > -1 ? 'zv' : '') . "zz"