Para manter as coisas mínimas, mas ainda funciona perfeitamente para mim, eu tenho isso, inspirado por cima: destaque simples até CursorMoved
:
function! HLNext()
let l:higroup = matchend(getline('.'), '\c'.@/, col('.')-1) == col('.')
\ ? 'SpellRare' : 'IncSearch'
let b:cur_match = matchadd(l:higroup, '\c\%#'.@/, 101)
redraw
augroup HLNext
autocmd CursorMoved <buffer>
\ execute 'silent! call matchdelete('.b:cur_match.')'
\ | redraw
\ | autocmd! HLNext
augroup END
endfunction
nnoremap <silent> * *:call HLNext()<CR>
nnoremap <silent> # #:call HLNext()<CR>
nnoremap <silent> n n:call HLNext()<cr>
nnoremap <silent> N N:call HLNext()<cr>
Agora, n
mesmo sem hlsearch
me mostra onde aterrissou até mover o cursor. O SpellRare
é usado para torná-lo mais ovbious quando apenas um único personagem corresponde, caso contrário, é o bomIncSearch