Come posso impostare un righello in una colonna specifica?


50

Quando codifico in diverse lingue, tendo a limitare le mie linee a una lunghezza specifica (di solito 79 o 80 caratteri).

Ho visto questo fatto in altri editor attraverso l'uso di un righello (linea continua visualizzata nella colonna) o cambiando il colore del testo per indicare che è stato superato.

Come posso fare in modo che Vim mi indichi quando mi sto avvicinando o superando 79 caratteri in una sola riga?

Risposte:


64

Puoi visualizzare un righello su una riga specifica usando l' opzione :set colorcolumn( :set ccin breve) che è disponibile solo in Vim 7.3 o versioni successive.

set colorcolumn=80

Questo imposterà il colore di sfondo di quella colonna su rosso, dandoti un righello visivo su cui lavorare.

Immagine della colonna colori predefinita impostata su 80

Se si desidera utilizzare un colore diverso da quello rosso (che risalta davvero), è possibile modificare il colore impostando il valore highlightper ColorColumn.

highlight ColorColumn ctermbg=0 guibg=lightgrey

Colore personalizzato per la colonna

È possibile impostare il colore per le versioni terminali di Vim usando l' ctermargomento e le versioni GUI di Vim usando l' guibgargomento. Il 0è il valore del codice di escape ASCII per il nero, che è grigia quando illuminato (che è, per impostazione predefinita). Il valore lightgreyviene utilizzato per le versioni GUI di Vim, come gVim, per cambiare il colore di sfondo in grigio chiaro.


10
Puoi anche avere più colonne di colore separate da virgola!
200_successo

4
Combina questo con join & range e puoi avere un mucchio di colonne colorate con pochissimo codice. Il mio .vimrc ha:execute "set colorcolumn=" . join(range(81,335), ',')
Cody Poll l'

19

Come aggiunta alla risposta di Kevin, puoi avere più colonne di colore. Quando scrivo un codice, a volte ho un limite "soft" a 80 colonne e un limite "hard" a 120 colonne. Quindi voglio una linea a 80 e quindi ogni colonna dopo 120 da colorare.

Lo faccio con

let &colorcolumn="80,".join(range(120,999),",")

Naturalmente, questo può essere facilmente modificato ad altre preferenze.


14

Vim 7.3 porta l' colorcolumnopzione, come descritto molto bene in altre risposte.

Tuttavia, se non hai la versione 7.3 per qualsiasi motivo, puoi comunque ottenere un'indicazione visiva che stai superando un determinato numero di colonne usando la matchfunzionalità di vim (vedi :help matchper i dettagli).

In sostanza, i comandi di corrispondenza consentono di creare evidenziazioni persistenti per la corrispondenza del testo di una determinata espressione regolare. :match ColorColumn "\%80v."evidenzierà il testo nella colonna 80 con il gruppo "ColorColumn". Ovviamente puoi sostituire qualsiasi gruppo di evidenziazione e qualsiasi valore di colonna. Se si desidera una forte indicazione visiva, l'espressione "\%>79v.\+"evidenzierà la colonna 80 e oltre.

( \%80vsignifica "corrispondenza nella colonna virtuale 80" e \%>79vsignifica "corrispondenza dopo la colonna virtuale 79; vedere :help /\%cdi più.)

Questo approccio verrà evidenziato solo quando sono presenti caratteri effettivi nelle colonne specificate, il che lo rende visivamente meno coerente di colorcolumn.


4
Personalmente trovo matchmigliore l' approccio meno coerente di es, in quanto evidenzia solo quelle linee in cui sto superando il limite di 80 colonne, piuttosto che mostrare una grande linea rossa invasiva (a me) sulla destra dello schermo. Quindi nel mio vimrc per Python utilizzo call matchadd('ColorColumn', '\(\%80v\|\%100v\)')(80 e 100 sono le lunghezze suggerite in PEP 8)
jalanb,
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.