Jak ustawić linijkę w określonej kolumnie?

50

Podczas kodowania w różnych językach staram się ograniczać moje wiersze do określonej długości (zwykle 79 lub 80 znaków).

Widziałem to w innych edytorach za pomocą linijki (ciągła linia wyświetlana w kolumnie) lub przez zmianę koloru tekstu, aby wskazać, że został on pominięty.

Jak mogę wskazać Vimowi, gdy zbliżam się lub przekraczam 79 znaków w jednym wierszu?

Kevin Brown
źródło

Odpowiedzi:

64

Możesz wyświetlić linijkę w określonej linii za pomocą opcji :set colorcolumn( :set ccw skrócie), która jest dostępna tylko w Vimie 7.3 lub nowszym.

set colorcolumn=80

Spowoduje to ustawienie koloru tła tej kolumny na czerwony, dając wizualną linijkę do pracy.

Obraz domyślnej kolumny kolorów ustawionej na 80

Jeśli chcesz użyć innego koloru niż czerwony (co naprawdę się wyróżnia), możesz zmienić kolor, ustawiając highlightdla ColorColumn.

highlight ColorColumn ctermbg=0 guibg=lightgrey

Dostosowany kolor kolumny

Możesz ustawić kolor dla terminalowych wersji Vima za pomocą ctermargumentu i wersji GUI Vima za pomocą guibgargumentu. Jest 0to wartość kodu ucieczki ASCII dla koloru czarnego, który po rozjaśnieniu jest szary (który jest domyślnie). Wartość ta lightgreyjest używana w wersjach GUI Vima, takich jak gVim, w celu zmiany koloru tła na jasnoszary.

Kevin Brown
źródło
10
Możesz nawet mieć wiele kolumn kolorów oddzielonych przecinkami!
200_sukces
4
Połącz to z łączeniem i zakresem, aby uzyskać kilka kolumn pokolorowanych bardzo małą ilością kodu. Mój .vimrc ma:execute "set colorcolumn=" . join(range(81,335), ',')
Ankieta Cody
19

Jako dodatek do odpowiedzi Kevina możesz mieć wiele kolumn kolorów. Kiedy koduję, czasami mam limit „miękki” przy 80 kolumnach i „twardy” limit przy 120 kolumnach. Chcę więc, aby linia miała 80, a następnie każda kolumna po 120 była pokolorowana.

Robię to z

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

Oczywiście można to łatwo zmienić na inne preferencje.

davidlowryduda
źródło
14

Vim 7.3 wprowadza tę colorcolumnopcję, jak szczegółowo opisano w innych odpowiedziach.

Jednakże, jeśli z jakiegoś powodu nie masz wersji 7.3, nadal możesz uzyskać wizualne wskazanie, że przekraczasz określoną liczbę kolumn, korzystając z matchfunkcjonalności vima (zobacz :help matchszczegóły).

Zasadniczo polecenia dopasowania pozwalają tworzyć trwałe podświetlenia tekstu pasującego do danego wyrażenia regularnego. :match ColorColumn "\%80v."podświetli tekst w kolumnie 80 za pomocą grupy „ColorColumn”. Możesz oczywiście zastąpić dowolną grupę wyróżnień i dowolną wartość kolumny. Jeśli potrzebujesz silnego wskazania wizualnego, wyrażenie "\%>79v.\+"podświetli kolumnę 80 i kolejne.

( \%80voznacza „dopasuj w wirtualnej kolumnie 80” i \%>79voznacza „dopasuj po wirtualnej kolumnie 79; zobacz :help /\%cwięcej).

Podejście to zostanie podświetlone tylko wtedy, gdy w określonych kolumnach znajdują się rzeczywiste znaki, co czyni go mniej spójnym wizualnie niż colorcolumn.


źródło
4
Osobiście uważam, że mniej spójne podejście jest matchlepsze, ponieważ podkreśla tylko te linie, w których przekraczam limit 80 kolumn, zamiast pokazywać (dla mnie) natrętną dużą czerwoną linię po prawej stronie ekranu. Stąd w moim vimrc dla Pythona używam call matchadd('ColorColumn', '\(\%80v\|\%100v\)')(80 i 100 są sugerowanymi długościami w PEP 8)
jalanb