Para mantener las cosas mínimas, pero aún funciona perfectamente para mí, tengo esto, inspirado desde arriba: resaltado simple hasta 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>
Ahora, nincluso sin hlsearch, me muestra el lugar donde aterricé hasta que muevo el cursor. Se SpellRareusa para hacer que sea más desagradable cuando solo un personaje coincide, de lo contrario es el suaveIncSearch