Conosco lo :nohl
e lo uso sempre, inoltre utilizzo il movimento facile in modo che l'evidenziazione non sia a mio favore quando ci si sposta nella posizione di ricerca. Si mette sulla mia strada dopo aver premuto n
o N
.VIM: Come disattivare l'evidenziazione della ricerca dopo il timeout (X secondi)
Sto cercando un modo per disattivare l'evidenziazione di ricerca dopo 3 seconds
di premere n
o N
, anche per completezza vorrei un modo per disattivare anche dopo la ricerca per esempio /search_word<CR>
.
Infine, deve essere un comando non bloccante.
Grazie, sto lentamente entrando in vimscript ma questo è fuori dal mio campionato poiché non ho visto molti esempi di comandi con timeout.
EDIT:
Dopo alcuni commenti e le ricerche on-line ci sono un sacco di indicazioni non v'è un buon modo per fare questo con vimscript.
Sto cercando un modo per farlo in modo stabile con qualsiasi lingua, ad es. Perl, Python, Ruby.
EDIT 2:
Questa è la mia soluzione basata sulla risposta di @ dhruva-Sagar: (ho segnato la sua risposta come corretta perché mi ha dato lo scheletro per esso).
augroup NoHLSearch
au!
autocmd CursorHold,CursorMoved * call <SID>NoHLAfter(4)
augroup END
function! s:NoHLAfter(n)
if !exists('g:nohl_starttime')
let g:nohl_starttime = localtime()
else
if v:hlsearch && (localtime() - g:nohl_starttime) >= a:n
:nohlsearch
redraw
unlet g:nohl_starttime
endif
endif
endfunction
multi-threading è difficile e difficile da eseguire in vimScript. puoi creare una mappa per ': noh', sarebbe la soluzione più semplice. Sai che dopo/foo' il 'foo' è stato memorizzato in'/'reg, non importa se hai eseguito' noh' o no, la prossima volta che hai premuto 'n o N', il testo corrispondente sarebbe stato evidenziato, è a portata di mano e abbastanza bene per me. – Kent