Синтаксическая окраска Vim: Как выделить только длинные строки?

Я бы хотел, чтобы vim окрашивал "длинные" строки для меня. Например, используя 80 столбцов, я хотел бы выделить строки, которые превышают эту длину. Вот примерно то, что я думаю, должен содержать файл .vimrc, хотя он (1) не работает и (2) использует синтаксис regex Perl, чтобы проиллюстрировать мою точку зрения, потому что я не знаю Vim достаточно хорошо:

...
highlight Excess ctermbg=0
au Syntax * syn match Excess /.{80,}$/
...

Это (по моему мнению, по крайней мере) должно обозначать строки, которые превышают 80 столбцов. То, что я бы идеально хотел, - это возможность цвета только той части строки, которая превышает 80 столбцов, поэтому, если строка содержит 85 столбцов, тогда будут выделены 81-й по 85-й столбцы.

Я уверен, что Vim может это сделать, только не со мной у руля.

Ответ 1

Мне нужен автокоманд для работы для меня:

augroup vimrc_autocmds
  autocmd BufEnter * highlight OverLength ctermbg=darkgrey guibg=#111111
  autocmd BufEnter * match OverLength /\%75v.*/
augroup END

Также, как идея использования 75, если вы стремитесь к 80 столбцам в среднем.

Взято из:

http://blog.ezyang.com/2010/03/vim-textwidth/

Возможная причина неудачи без BufEnter: выделить + совпадение можно использовать только один раз. Многократное использование означает, что старые переопределены. Как добавить несколько ярлыков

Ответ 2

У меня это в моем vimrc.
Я нашел его здесь: Распределение столбцов Vim 80...

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%81v.*/

Вы можете настроить цвета в соответствии с вашими предпочтениями.

Ответ 3

Поскольку мне не нравится маркер столбца Vim 7.3, я просто использую текст выделения после столбца 80... по крайней мере, это то, что я хочу 95% времени.

В течение остальных 5% времени я написал это небольшое расширение, чтобы также иметь быстрый способ отключить выделение:

https://gist.github.com/fgarcia/9704429#file-long_lines-vim

Ответ 4

Я использую следующий метод:

hi gitError ctermbg=Red
match gitError /^.*\s$/
2match gitError /^.\{120\}.*$/

(Они соответствуют некоторым git перехватам фиксации)

Вторая строка должна быть interrest для вас.

Ответ 5

Это использует автокоманду для настройки значения OverLength для соответствия типу вашего файла.

" highlight lines longer than `textwidth` size for each filetype
autocmd FileType *
    \ if &textwidth |
    \    exec 'match OverLength /\%' . string(&textwidth+2) . 'v.*/' |
    \ endif