Come impostare un indicatore di lunghezza della linea in vim / gvim?


75

Alcuni editor di testo della GUI hanno una linea verticale che funge da indicatore della lunghezza della linea (aiuta a mantenere le linee più corte di 80 caratteri nei file di codice sorgente).

È possibile avere qualcosa di simile in vim / gvim? So di righello opzione vim, ma non è molto utile per seguire visivamente su un grande schermo.

Modifica: quando cerchi su "colorcolumn" per saperne di più, ho scoperto che questa domanda è un duplicato di https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns


Risposte:


131

Basta eseguire questo

:set colorcolumn=72

Puoi anche aggiungere un prefisso all'argomento con -o +per mettere il marcatore di molte colonne a sinistra o a destra textwidthe accetta un elenco di colonne separato da virgole. Penso che l' colorcolumnopzione sia solo in Vim 7.3. Vedere

:help colorcolumn

8
Wow, vim non smette mai di stupirmi!
Peter Nore,

4
Bello! Utile anche quando columns=80, wrapè impostato e colorcolumn=81,161,241,321,401,481,561,641,721,801- mostra fino a 10 linee avvolte con la prima colonna evidenziata.
Amir,

20

Dal discorso "More Instantly Better Vim" di Damian Conway all'OSCON 2013:

highlight ColorColumn ctermbg=magenta
call matchadd('ColorColumn', '\%81v', 100)

Ciò si traduce in un carattere evidenziato in magenta (lo screenshot è attivo DarkCyan) quando la linea supera il massimo di 80 caratteri.

vim con evidenziazione abilitata

Per gVim: è meglio spostare quelle 2 righe nell'ultima parte del .vimrcfile per assicurarsi che funzioni.


Eh! Ho appena risposto alla tua domanda molto simile su questo ... piccolo mondo! superuser.com/questions/771558/…
lornix il

Ho inserito questa risposta, poi mi sono ricordato che non potevo farlo in gVim, quindi ho chiesto. ;)
Isxek,

Caspita, è davvero grandioso! Questo è il tipo di funzionalità che non saprei nemmeno cercare. Sto usando il modello '\$81v\S'che corrisponde solo a caratteri non bianchi. Ciò significa che l'evidenziazione non verrà mostrata quando la linea è lunga esattamente 80 caratteri (il che è qualcosa che mi ha davvero infastidito). Vedere questo per ulteriori informazioni stackoverflow.com/questions/12985042/...
fvgs

1
Vuoi fare un paio di correzioni al mio commento precedente. L' $avrebbe dovuto essere un %. Allo stesso modo, ora uso il modello \%81v.poiché questo assicura che la 81a colonna venga evidenziata per qualsiasi personaggio nella 81a colonna, che è probabilmente quello che vuoi.
fvgs

2

Puoi provare questo:

grep '.\{81\}' file

o

set colorcolumn=80

(o l'equivalente abbreviato)

set cc=80

o come sopra menzionato:

match ErrorMsg '\%>80v.\+'

0

Di seguito è riportato un trucco goffo di Hacking Vim: A Cookbook per ottenere il massimo dall'ultimo editor Vim di Kim Schultz.

Evidenzia con ErrorMsg(di solito rosso vivo) tutte le righe che superano gli 80 caratteri. Funziona bene per me.

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction

Che cosa dovrei fare con questo frammento? Basta inserirlo in .vimrc?
vtest

Provare prima semplicemente chiamando è :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)sufficiente. Ma non lo consiglierei più poiché @garyjohn sapeva qualcosa di meglio
unperson325680,
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.