Sto scrivendo uno script in cui voglio controllare le ricerche a livello di codice e ottenerle evidenziate. I risultati della funzione search() non sono evidenziati (credo), quindi l'utilizzo di tale funzione non mi è utile.Controllo ricerca ed evidenziazione Vim da uno script
Quello che voglio fare è usare il comando 'normal /' per cercare una variabile, ma non sembra essere semplice. Posso lo script del comando:
execute 'normal /' . my_variable . '\<CR>'
(o altre varianti come suggerito nella punta vim qui: http://vim.wikia.com/wiki/Using_normal_command_in_a_script_for_searching)
ma non fa nulla. Riesco a vedere il termine di ricerca corretto in basso nella riga di comando dopo l'esecuzione della riga di script, ma il focus è nel documento, il registro di ricerca non è stato alterato e il cursore non ha effettuato alcuna ricerca. (Sembra che lo < CR> non venga immesso, anche se non viene emesso alcun errore - e sì, ho provato a usare anche il letterale^M)
Posso almeno controllare il registro di ricerca facendo questo:
execute 'let @/ ="' . a:term .'"'
e poi la cosa più ovvia sembra essere quello di fare un:
normal n
Ma che 'n normale' non fa nulla se l'eseguo in uno script. L'impostazione del registro di ricerca funziona, se premo manualmente "n" dopo che lo script termina la ricerca avviene (e l'evidenziazione appare, dato che hlsearch è attivo). Non mi interessa nemmeno se il cursore è posizionato, voglio solo che il pattern di registrazione sia evidenziato. Ma varie combinazioni di "set hlsearch" nello script non funzionano neanche.
So che potrei usare 'match()', ma voglio farlo funzionare con l'evidenziazione di ricerca regolare, e mi chiedo cosa sto facendo male. Deve essere qualcosa di semplice ma non lo vedo. Grazie per qualsiasi aiuto.
Ho provato il mio comando di ricerca. 'execute" normal/^ --- \ "' funziona. Ma 'esegui 'normale/^ --- \ '' no. –
ppan