Wie richte ich eine Linienlängenmarkierung in vim / gvim ein?


75

Einige GUI-Texteditoren haben eine vertikale Linie, die als Zeilenlängenmarkierung dient (dies hilft, Zeilen in Quelltextdateien kürzer als 80 Zeichen zu halten).

Ist es möglich, etwas ähnliches in vim / gvim zu haben? Ich weiß , über Lineal vim Option, aber es ist nicht sehr praktisch , es visuell auf einem großen Bildschirm zu folgen.

Bearbeiten: Wenn ich nach "colorcolumn" google, um mehr zu erfahren, habe ich festgestellt, dass es sich bei dieser Frage um ein Duplikat von https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns handelt


duplizieren auf einer anderen Website ... stackoverflow.com/questions/235439/…
Trevor Boyd Smith

Antworten:


131

Führen Sie dies einfach aus

:set colorcolumn=72

Sie können dem Argument auch -oder voranstellen +, um die Markierung links oder rechts von so vielen Spalten zu setzen, dass textwidtheine durch Kommas getrennte Liste von Spalten akzeptiert wird. Ich denke die colorcolumnOption gibt es nur in Vim 7.3. Sehen

:help colorcolumn

8
Wow, vim hört nie auf, mich zu überraschen!
Peter Nore

4
Nett! Auch nützlich, wenn columns=80, wrapgesetzt ist und colorcolumn=81,161,241,321,401,481,561,641,721,801- bis zu 10 umbrochene Zeilen mit hervorgehobener erster Spalte anzeigt.
Amir,

20

Aus Damian Conways "More Instantly Better Vim" -Rede auf der OSCON 2013:

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

Dies führt dazu, dass das Zeichen in Magenta hervorgehoben wird (der Screenshot ist in DarkCyan), wenn die Zeile das Maximum von 80 Zeichen überschreitet.

vim mit aktivierter Hervorhebung

Für gVim: Verschieben Sie diese beiden Zeilen am besten an den letzten Teil Ihrer .vimrcDatei, um sicherzustellen, dass sie funktionieren.


Huh! Ich habe gerade Ihre sehr ähnliche Frage zu dieser ... kleinen Welt beantwortet ! superuser.com/questions/771558/...
lornix

Ich habe diese Antwort eingegeben und mich dann daran erinnert, dass ich sie in gVim nicht ausführen konnte, also habe ich gefragt. ;)
Isxek

Wow, das ist wirklich toll! Dies ist die Art von Funktion, nach der ich nicht einmal Ausschau halten würde. Ich verwende das Muster, '\$81v\S'das nur mit Nicht-Leerzeichen übereinstimmt. Dies bedeutet, dass die Hervorhebung nicht angezeigt wird, wenn die Zeile genau 80 Zeichen lang ist (was mich wirklich gestört hat). Weitere Informationen finden Sie unter stackoverflow.com/questions/12985042/…
fvgs

1
Ich möchte ein paar Korrekturen an meinem vorherigen Kommentar vornehmen. Das $hätte ein %. Ebenso verwende ich jetzt das Muster, \%81v.da dies sicherstellt, dass die 81. Spalte für jedes Zeichen in der 81. Spalte hervorgehoben wird, was wahrscheinlich das ist, was Sie wollen.
fvgs

2

Sie könnten dies versuchen:

grep '.\{81\}' file

oder

set colorcolumn=80

(oder das Kürzel)

set cc=80

oder wie oben erwähnt:

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

0

Unten ist ein ungeschickter Trick von Hacking Vim: Ein Kochbuch, um das Beste aus dem neuesten Vim-Editor von Kim Schultz herauszuholen .

ErrorMsgAlle Zeilen mit mehr als 80 Zeichen werden hervorgehoben (normalerweise hellrot). Funktioniert gut für mich.

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

Was soll ich mit diesem Schnipsel machen? Einfach in .vimrc stecken?
vtest

Es reicht aus, zuerst zu versuchen, indem Sie einfach anrufen :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4). Aber ich würde das nicht mehr empfehlen, da @garyjohn etwas besseres wusste
unperson325680
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.