Evidenziazione di parole in vim (plugin)


1

Dato un elenco di parole, voglio evidenziare tutte quelle parole nel buffer corrente. Sto scrivendo un plug-in Vim quindi mi aspetto un po 'di rasatura yak.

Questo è possibile in modo sano?


1
Hai letto :help :match e inoltre?
romainl

Risposte:


1
highlight LOL ctermbg=red
call matchadd("LOL", "this")
call matchadd("LOL", "little")
call matchadd("LOL", "light")
call matchadd("LOL", "of")
call matchadd("LOL", "mine")

0

Sì, è molto facile evidenziare più termini di ricerca, e abbastanza saggiamente come descritto di seguito.

Come esempio rapido, ecco un esempio di associazione a chiave F8 a evidenzia tutte le occorrenze della parola sotto il cursore nel buffer corrente preso da Evidenzia tutte le corrispondenze dei pattern di ricerca: Vim Tips Wiki (basta inserire :set hls per attivare l'evidenziazione della ricerca per tagliare all'inseguimento):

:nnoremap <F8> :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>

Quindi, premo il mio pulsante F8 nel buffer corrente mentre sono seduto sulla parola read e questo è quello che ottengo:

enter image description here

Espansione della ricerca di più parole, tratto da Cerca modelli - Vim Tips Wiki , Trovando questo o quello , cerca le parole separate da un carattere di pipe sfuggito, \|, come questo:

/read\|execute\|readattr

E questo è ciò che viene visualizzato:

enter image description here


0

Per un plugin che ti permette di

  • evidenzia la parola sotto il cursore
  • evidenziare un modello specificato sulla riga di comando
  • dare ad ogni nuovo motivo un nuovo colore
  • vedere i modelli evidenziati correnti
  • smettere di evidenziare un motivo

vedere mark.vim .


0

L'aggiunta di evidenziazioni personalizzate (senza influenzare il modello di ricerca corrente) è facile con matchadd() / matchdelete() funzioni. Il problema è nel buffer corrente requisito, perché queste funzioni sono window-locali .

Per una soluzione ad-hoc rapida e sporca, questa differenza probabilmente non ha molta importanza, ma per un plugin, dovrai gestire (tramite :autocmd s) quando viene visualizzato un altro buffer nella finestra corrente (cancellando le evidenziazioni allora), e possibilmente anche un'altra finestra che visualizza lo stesso buffer di quello corrente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.