Проблемы компоновки столбцов Vim 80
Я чувствую, что способ, которым я делаю 80-столбцовую индикацию в Vim, неверен:set columns=80. Временами я тоже set textwidth но мне нравится видеть и предвидеть переполнение строки с помощью set columns альтернативы.
это имеет некоторые неприятные побочные эффекты-я не могу set number из-за боязни разделения между файлами, которые имеют разные порядки номеров строк; т. е. = 100 линейных файлов потребуется два разных set columns значения из-за дополнительного столбца, используемого для дополнительного цифровой дисплей. Я также запускаю новые (g)сеансы Vim вместо разделения окон по вертикали, что заставляет меня использовать буфер обмена оконного менеджера -- vsplits заставить меня сделать 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опции.
Саймон Ховард-это здорово. Но
/\%81v.\+/не удается выделить вкладки, которые превышают колонки 81 . Поэтому я сделал небольшую настройку, основанную на материале, который я нашел на ВИМ Вики и выбор 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 позволяют a
:set numberwidth=xзначение, которое задает ширину отображения номера строки. Я действительно не использую складывание и т. д., Поэтому я бы не знал об этом. Однако рисование тонкой вертикальной линии выходит за рамки возможностей консольного приложения. GVim может разрешить это (я не использую его, поэтому не могу комментировать там).
боюсь, что вы наложили ограничения на набор решений, которые, ну, оставляют вас с нулевым набором.
используя
:set textwidth=80исправит все проблемы, которые вы упомянули за исключением что вы не можете легко увидеть предел линии подходит. Если вы:set ruler, вы включите отображение положения 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, на самом деле это не делается, чтобы возиться.
в консоли он обычно определяется настройкой консоли (т. е. определяется автоматически) ; в графическом интерфейсе он определяет (и определяется) ширину окон gvim.
так что обычно вы просто позволяете консолям и оконным менеджерам делать свою работу, комментируя
set columnsЯ не уверен, что вы подразумеваете под "видеть и предвидеть переливной линии". Если вы хотите, чтобы Эол был вставляется примерно столбец 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.


Comments