Jak ustawić znacznik długości linii w vim / gvim?


75

Niektóre edytory tekstu GUI mają pionową linię, która służy jako znacznik długości linii (pomaga utrzymać linie krótsze niż 80 znaków w plikach kodu źródłowego).

Czy można mieć coś podobnego w vim / gvim? Wiem o opcji linijki vim, ale nie jest bardzo przydatne śledzenie jej wizualnie na dużym ekranie.

Edycja: kiedy googling dla „colorcolumn”, aby dowiedzieć się więcej, odkryłem, że to pytanie jest duplikatem https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns


Odpowiedzi:


131

Po prostu to wykonaj

:set colorcolumn=72

Możesz także poprzedzić argument za pomocą -lub, +aby umieścić znacznik, którego wiele kolumn po lewej lub prawej stronie textwidth, i akceptuje listę kolumn oddzieloną przecinkami. Myślę, że colorcolumnopcja jest tylko w Vimie 7.3. Widzieć

:help colorcolumn

8
Wow, vim nigdy nie przestaje mnie zadziwiać!
Peter Nore,

4
Miły! Również użyteczne, gdy columns=80, wrapjest ustawiony, colorcolumn=81,161,241,321,401,481,561,641,721,801- zawiera do 10 owiniętych linie z pierwszej kolumny podświetlone.
Amir

20

Z przemówienia Damiana Conwaya „More Natychmiast Better Vim” na OSCON 2013:

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

Powoduje to, że postać jest podświetlona na purpurowo (zrzut ekranu jest włączony DarkCyan), gdy linia przekroczy maksimum 80 znaków.

vim z włączonym podświetlaniem

Dla gVim: najlepiej przenieść te 2 linie do ostatniej części swojego .vimrcpliku, aby upewnić się, że działa.


Huh! Właśnie odpowiedziałem na twoje bardzo podobne pytanie dotyczące tego ... małego świata! superuser.com/questions/771558/…
lornix

Włożyłem tę odpowiedź, a potem przypomniałem sobie, że nie mogę tego zrobić w gVim, więc zapytałem. ;)
Isxek

Wow, to jest naprawdę świetne! Jest to funkcja, o której nawet nie wiedziałbym szukać. Używam wzorca, '\$81v\S'który pasuje tylko do znaków innych niż białe znaki. Oznacza to, że wyróżnienie nie pojawi się, gdy linia będzie miała dokładnie 80 znaków (co mnie naprawdę niepokoi). Zobacz to, aby uzyskać więcej informacji stackoverflow.com/questions/12985042/...
fvgs

1
Chcę wprowadzić kilka poprawek do mojego poprzedniego komentarza. $Powinno być %. Podobnie, teraz używam wzorca, \%81v.ponieważ zapewnia to, że 81. kolumna zostanie podświetlona dla każdego znaku w 81. kolumnie, co prawdopodobnie jest tym, czego chcesz.
fvgs

2

Możesz spróbować:

grep '.\{81\}' file

lub

set colorcolumn=80

(lub skrót stenografii)

set cc=80

lub jak wspomniano powyżej:

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

0

Poniżej znajduje się niezdarna sztuczka z Hacking Vim: Książka kucharska, aby uzyskać jak najwięcej z najnowszego edytora Vima autorstwa Kim Schultz.

Podkreśla ErrorMsg(zwykle jaskrawoczerwoną) każdą linię o długości ponad 80 znaków. Działa dla mnie dobrze.

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

Co mam zrobić z tym fragmentem? Po prostu włóż to do .vimrc?
vtest

Najpierw wystarczy po prostu zadzwonić :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4). Ale nie poleciłbym tego więcej, ponieważ @garyjohn wiedział coś lepszego
unperson325680
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.