Jak wyświetlić pionową linię, aby zawinąć linię w Vimie?

116

Jestem zainteresowany znalezieniem sposobu na pokazanie pionowej linii w kolumnie 80 w Vimie (nie w GVimie).

Używałem set wrap, ale chcę tylko pokazać pionową linię, aby samemu zawinąć długą linię.

jennifer
źródło
Możliwe powtórzenie problemów z układem kolumn
Trevor Boyd Smith

Odpowiedzi:

15

Edycja: Dla Vima> = 7.3 zobacz odpowiedź poniżej .

Niestety vim nie ma mechanizmu wyświetlającego pionową linię po kolumnie, tak jak chcesz (w przeciwieństwie do, powiedzmy, TextMate). Istnieją jednak alternatywne wskaźniki wizualne, których można użyć do pokazania, że ​​linia jest zbyt długa.

Oto czego używam (możesz to umieścić w swoim .vimrc):

nnoremap <Leader>H :call<SID>LongLineHLToggle()<cr>
hi OverLength ctermbg=none cterm=none
match OverLength /\%>80v/
fun! s:LongLineHLToggle()
 if !exists('w:longlinehl')
  let w:longlinehl = matchadd('ErrorMsg', '.\%>80v', 0)
  echo "Long lines highlighted"
 else
  call matchdelete(w:longlinehl)
  unl w:longlinehl
  echo "Long lines unhighlighted"
 endif
endfunction

Możesz więc użyć <Leader>Hdo przełączania podświetlonych kolumn powyżej 80.

Sam
źródło
Reprezentacja klucza lidera w skrypcie vim. Zobacz Pokaż aktualne ustawienie klawisza <leaderka>
Rod
@Will, Learn Vimscript the Hard Way to dobre źródło informacji o króliczej norze vim.
jazzabeanie
310

Nowość w Vim 7.3:

„kolumna kolorów” to rozdzielona przecinkami lista kolumn ekranu, które są podświetlone za pomocą kolumny ColorColumn. Przydatne do wyrównywania tekstu. Spowalnia odświeżanie ekranu. Kolumna ekranu może być liczbą bezwzględną lub liczbą poprzedzoną znakiem „+” lub „-”, która jest dodawana lub odejmowana od „textwidth”.

Przykład z dokumentów:

:set colorcolumn=+1        " highlight column after 'textwidth'
:set colorcolumn=+1,+2,+3  " highlight three columns after 'textwidth'
:highlight ColorColumn ctermbg=lightgrey guibg=lightgrey

Możesz również użyć liczb bezwzględnych:

:set colorcolumn=80
UncleZeiv
źródło
4
Myślę, że dobrze jest zauważyć, że kolor jest automatycznie określany przez kolor podświetlenia, chyba że ustawisz go ręcznie, jak w przykładzie.
Alex Hart
Zwróć uwagę, że highlightustawienie należy ustawić po każdym colorschemepoleceniu, ponieważ spowodowałoby to przesłonięcie koloru podświetlenia.
c4urself
7
Poszedłem z jasną, spalającą mózg czerwoną ... ponieważ wiesz ... długość linii
Ron Dahlgren
Czy znasz sposób, aby mieć dwa różne kolory dla kolumny kolorów? Chciałbym mieć dwa: zwykły z 80 znakami dla kodu i bardzo słaby z 72 znakami dla tekstu / komentarzy.
Alice,
Byłoby dobrze wspomnieć, że textwidthpowoduje to również zawijanie się vima podczas pisania.
pisklęta
12

Istnieje inny sposób powiadamiania o długiej kolejce.

podświetl OverLength ctermbg = red ctermfg = white guibg = # 592929
match OverLength /\%81v.*/

Vim 80 dotyczy układu kolumn

Brian
źródło
6

Używam, match ErrorMsg '\%>80v.\+'który podświetli wszystko powyżej 80 znaków na czerwono.

Umieściłem to polecenie w moim python.vim i ruby.vim pod ~ / .vim / after / ftplugin /.

Pierre-Antoine LaFayette
źródło