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

vtest
źródło
zduplikuj na innej stronie ... stackoverflow.com/questions/235439/…
Trevor Boyd Smith

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
garyjohn
źródło
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.

Isxek
źródło
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.\+'
Gabriel Zalles
źródło
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
unperson325680
źródło
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