2010-01-27 14 views
8

Vorrei evidenziare intere righe che corrispondono a determinati motivi. Posso ottenere tutto il testo in una linea per evidenziare (facendo syn match MyMatch "^.*text-to-match.*$"), ma si ferma sempre alla fine del testo. Mi piacerebbe continuare fino alla fine del termine, come evidenziare CursorLine.Come faccio a fare in modo che la sintassi di vim evidenzia un'intera linea?

Ho provato a sostituire $ con un \n^, sperando che lo avvolgerebbe. Nessun cambiamento. (In realtà non mi aspettavo che funzionasse, ma non c'è nulla di male nel provare.) Ho anche provato a regolare l'offset del modello syn (che ho letto qui: http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-pattern). Per farla breve, aggiungendo he=he-5 si evidenziano 5 caratteri in meno, ma he=he+5 non mostra caratteri aggiuntivi perché non ci sono caratteri da evidenziare.

Questo è il mio primo tentativo di fare una sintassi vim e sono relativamente nuovo da vim. Si prega di essere gentile e includere spiegazioni.

Grazie!

(edit: Ho dimenticato di includere, questo è un punto culminante multilinea Che probabilmente aumenta la complessità un po '..)

+0

È il vostro modello suppone di leggere '^ * text-to-partita * $'..? – Cascabel

+0

Jefromi, lo è. SO utilizza apparentemente asterischi avvolti per fare il corsivo. È riparato ora. – valadil

+0

Nessun'altra sintassi, ma è del tutto possibile che il resto della mia sintassi si stia mordendo. Forse dovrei iniziare dalle linee che voglio evidenziare completamente e poi scrivere il resto una volta che funziona? – valadil

risposta

8

Dalla documentazione sulla syn-pattern:

L'area evidenziata sarà mai fuori del testo abbinato.

Mi piacerebbe essere sorpreso se tu riuscissi a farlo funzionare, ma poi di nuovo, Vim è sempre pieno di sorprese.

+0

Sì, ma il modello corrisponde all'intera linea. Dovrebbe evidenziare l'intera linea. – Cascabel

+1

Se la finestra è composta da 80 caratteri e il testo è di 4 caratteri, vengono confrontati solo i 4 caratteri e vengono evidenziati solo i 4 caratteri. L'OP vuole evidenziare tutte le 80 colonne. – Jay

+1

Jay è corretto. Non c'è modo di simulare il comportamento dell'opzione 'cursorline' con l'evidenziazione della sintassi standard. L'evidenziazione della sintassi ha il solo scopo di evidenziare il testo esistente. – jamessan

10

non è molto adattabile come il nome del file (buffer) e la linea a pieno evidenziare riga deve essere esplicitamente identificati, ma pare che il comando sign può essere utilizzato:

È possibile evidenziare un intero linea utilizzando il meccanismo : firma.
Un esempio può essere trovato alla :help sign-commands
In poche parole:

:sign define wholeline linehl=ErrorMsg 
:sign place 1 name=wholeline line=123 file=thisfile.txt 

Ovviamente, si dovrebbe scegliere un gruppo higlight che cambia il colore di sfondo per l'argomento linehl.

fonte: Erik Falor, vim mailing list

+0

Puoi evidenziare in background l'intera linea in questo modo, ma il testo perderà la sua evidenziazione della sintassi. –

Problemi correlati