Vim 80 расположение столбцов
Я чувствую, что то, как я делаю 80-столбцовую индикацию в Vim, неверно:set columns=80
. Временами я тоже set textwidth
но мне нравится видеть и предвидеть переполнение строки с помощью set columns
альтернативы.
это имеет некоторые неприятные побочные эффекты-я не могу set number
из страха разделения между файлами, которые имеют разные порядки номеров строк; т. е. = 100 линейных файлов потребуется два разных set columns
значения из-за дополнительного столбца, используемого для дополнительного цифровой дисплей. Я также запускаю новые (g)сеансы Vim вместо разделения окон по вертикали, что заставляет меня использовать буфер обмена оконного менеджера -- vsplit
s заставить меня сделать set columns
каждый раз, когда я открываю или закрываю панель, поэтому запуск нового сеанса меньше хлопот.
как вы обрабатываете 80-символьную индикацию, когда вы хотите set numbers
, вертикально разделенный, etc.?
14 ответов
У меня это настроено в моем.vimrc:
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
это выделяет фон тонким красным цветом для текста, который превышает предел столбца 80 (тонкий в режиме GUI, во всяком случае - в терминальном режиме это меньше).
начиная с vim 7.3, вы можете использовать set colorcolumn=80
(set cc=80
для краткости).
так как более ранние версии не поддерживают мой .vimrc
вместо этого использует:
if exists('+colorcolumn')
set colorcolumn=80
else
au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
endif
см. также онлайн-документация по colorcolumn
опции.
ответ Саймона Говарда велик. Но!--1--> не удается выделить вкладки, превышающие столбец 81 . Поэтому я сделал небольшую настройку, основанную на материале, который я нашел на VIM wiki и выбор HS цветов выше:
highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.\+/
и теперь VIM выделит все, что превышает столбец 80. Ура!
минималистичный, не-над-топ подход. Подсвечивается только 79-й символ слишком длинных строк. Он преодолевает несколько распространенных проблем: работает на новых окнах, переполненные слова подсвечиваются правильно.
augroup collumnLimit
autocmd!
autocmd BufEnter,WinEnter,FileType scala,java
\ highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGrey
let collumnLimit = 79 " feel free to customize
let pattern =
\ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'
autocmd BufEnter,WinEnter,FileType scala,java
\ let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END
Примечание: обратите внимание на FileType scala,java
это ограничивает это исходными файлами Scala и Java. Вы, вероятно, захотите настроить это. Если пропустить его, он будет работать на всех типах файлов.
хороший способ маркировки только первого символа, выходящего за указанные границы:
highlight ColorColumn ctermbg=magenta "set to whatever you like
call matchadd('ColorColumn', '\%81v', 100) "set column nr
от Дамиана Конвея говорить.
вы также можете нарисовать линию, чтобы увидеть 80 предел:
let &colorcolumn=join(range(81,999),",")
let &colorcolumn="80,".join(range(400,999),",")
результат:
более новые версии vim позволяют :set numberwidth=x
значение, которое задает ширину отображения номера строки. Я действительно не использую складывание и т. д., Поэтому я бы не знал об этом. Однако рисование тонкой вертикальной линии выходит за рамки возможностей консольного приложения. GVim может разрешить это (я не использую его, поэтому не могу комментировать там).
боюсь, что вы наложили ограничения на набор решений, которые, ну, оставляют вас с нулевым набором.
используя :set textwidth=80
исправит все проблемы, которые вы упомянули за исключением что вы не можете легко увидеть предел линии подходит. Если ты ... --1-->, вы включите отображение положения x, y в строке состояния, которое вы можете использовать, чтобы увидеть, в каком столбце вы находитесь.
кроме этого, я не уверен, что сказать вам. Стыдно потерять колонку с цифрами, сложить. колонка и расколы только потому, что вы должны :set columns=80
.
Вы можете попробовать это:
au BufWinEnter * if &textwidth > 8
\ | let w:m1=matchadd('MatchParen', printf('\%%<%dv.\%%>%dv', &textwidth+1, &textwidth-8), -1)
\ | let w:m2=matchadd('ErrorMsg', printf('\%%>%dv.\+', &textwidth), -1)
\ | endif
это настроит два основных момента в каждом буфере, один для символов в 8 столбцах до того, как ваш &textwidth
имеет значение, и один для символов за пределами этого столбца. Таким образом, у вас будет некоторое предвкушение. Конечно, вы можете настроить его на использование другой ширины, если хотите более или менее ожидание (за которое вы платите в виде потери подсветки синтаксиса в этих столбцах).
Ну, глядя на столбцы: help, на самом деле это не делается, чтобы возиться.
в консоли он обычно определяется настройкой консоли (т. е. он обнаруживается автоматически) ; в GUI он определяет (и определяется) шириной окон gvim.
поэтому обычно вы просто позволяете консолям и оконным менеджерам делать свою работу, комментируя set columns
Я не уверен, что вы подразумеваете под "видеть и предвидеть переливной линии".
Если вы хотите, чтобы EOL был вставлен грубо колонке 80, использовать set textwidth
или set wrapmargin
; Если вы просто хотите мягкую обертку (т. е. линия обернута, но нет фактического EOL), то играйте с set linebreak
и set showbreak
.
это одно из левого поля, но его хорошая маленькая карта для изменения размера вашего текущего разделения на 80 символов, если у вас есть номера строк:
" make window 80 + some for numbers wide
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82\|:vertical resize <c-r>w<cr>
вы можете попробовать установить размер окна, чтобы разрешить 80 символов фактического текста. Это все еще не работает с вертикальными расколами.
let &co=80 + &foldcolumn + (&number || &relativenumber ? &numberwidth : 0)
для этого требуется vim 7+, 7.3 для relativenumber.