Как показать вертикальную линию, чтобы обернуть строку в Vim?

Мне интересно найти способ показать вертикальную линию в столбце 80 в Vim (не GVim).

Я использовал set wrap, но я просто хочу показать вертикальную линию, чтобы я мог сам обернуть длинную строку.


person jennifer    schedule 17.12.2009    source источник
comment
Возможный дубликат проблем с макетом столбца Vim 80   -  person Trevor Boyd Smith    schedule 21.10.2016


Ответы (5)


Изменить: для Vim> = 7.3 см. Ответ ниже.

К сожалению, в vim нет механизма для отображения вертикальной линии после столбца, как вы хотите (в отличие, скажем, от TextMate). Однако есть альтернативные визуальные индикаторы, которые можно использовать, чтобы показать, что линия слишком длинная.

Вот что я использую (вы можете поместить это в свой .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

Итак, вы можете использовать <Leader>H, чтобы переключать выделенные столбцы более 80.

person Sam    schedule 17.12.2009
comment
Сценарий vim, представляющий ключ лидера. См. Показать текущую настройку клавиши ‹leader› - person Rod; 06.06.2013
comment
@Will, Learn Vimscript the Hard Way - хороший ресурс, чтобы узнать о кроличьей норе vim. - person jazzabeanie; 13.09.2016

Новое в Vim 7.3:

'colorcolumn' - это список столбцов экрана, разделенных запятыми, которые выделены ColorColumn. Полезно для выравнивания текста. Замедлит перерисовку экрана. Столбец экрана может быть абсолютным числом или числом, которому предшествуют символы «+» или «-», которые добавляются к «ширине текста» или вычитаются из него.

Пример из документов:

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

Вы также можете использовать абсолютные числа:

:set colorcolumn=80
person UncleZeiv    schedule 24.09.2010
comment
Я думаю, что здесь хорошо отметить, что цвет автоматически определяется цветом вашего выделения, если вы не установите его вручную, как в примере. - person Alex Hart; 18.09.2012
comment
Обратите внимание, что параметр highlight должен быть установлен после любых colorscheme команд, так как это переопределит цвет выделения. - person c4urself; 15.02.2013
comment
Я выбрал яркий, красный для твоего мозга ... потому что ты знаешь ... длина строки - person Ron Dahlgren; 30.04.2013
comment
Вы знаете, как иметь два разных цвета для столбца color? Я бы хотел иметь два: простой на 80 символов для кода и очень слабый на 72 символа для текущего текста / комментариев. - person Alice; 05.12.2013
comment
Было бы хорошо упомянуть, что textwidth также вызывает перенос vim при вводе текста. - person chicks; 20.01.2015
comment
@chutsu Цветовая диаграмма Vim находится по адресу: codeyarns.com/ 29 июля 2011 г. / vim-chart-of-color-names - person Ashwin Nanjappa; 11.09.2015
comment
Столбцы в Vim имеют индексы на основе единицы, поэтому, если вы хотите выделить столбец после максимальной ширины текста, используя абсолютные числа, это должно быть set colorcolumn=81 - person Leonid Vasilev; 18.09.2020

Есть еще один способ уведомить о длинной очереди.

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 <br>
match OverLength /\%81v.*/

Проблемы с макетом столбца Vim 80

person Brian    schedule 17.12.2009

Я использую match ErrorMsg '\%>80v.\+', который выделяет красным цветом все, что превышает 80 символов.

Я поместил эту команду в свои python.vim и ruby.vim в ~ / .vim / after / ftplugin /.

person Pierre-Antoine LaFayette    schedule 17.12.2009

Здесь несколько ответов. http://vim.wikia.com/wiki/Highlight_long_lines простая автокоманда

:au BufWinEnter * let w:m1=matchadd('Search', '\%<81v.\%>77v', -1)
:au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
person michael    schedule 17.12.2009