Vim syntax coloring: How do I highlight long lines

2019-01-17 11:44发布

I would like vim to color "long" lines for me. Using 80 columns as an example, I would like to highlight lines that exceed that length. Here is roughly what I think the .vimrc file should contain, although it (1) doesn't work, and (2) uses Perl's regex syntax to illustrate my point, because I don't know Vim's well enough:

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

This (in my mind at least) should mark lines that exceed 80 columns. What I would ideally like is the ability to color only the part of the line that exceeds 80 columns, so if a line is 85 columns, then the 81st through the 85th columns would be highlighted.

I'm sure Vim can do this, just not with me at the helm.

5条回答
相关推荐>>
2楼-- · 2019-01-17 12:03

I have this in my vimrc.
I found it here: Vim 80 column layout concerns

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

You might want to adjust the colors to your preferences.

查看更多
叼着烟拽天下
3楼-- · 2019-01-17 12:18

Since I do not like the Vim 7.3 column marker, I just use the highlight text after column 80... at least that is what I want 95% of the time.

For the other 5% of the time, I wrote this small extension to also have a quick way to disable the highlight:

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

查看更多
Emotional °昔
4楼-- · 2019-01-17 12:21

I use the following method:

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

(These match some git pre-commit hooks)

The second line should be of interrest to you.

查看更多
成全新的幸福
5楼-- · 2019-01-17 12:23

This uses an autocommand to adjust the OverLength value to match your file type.

" highlight lines longer than `textwidth` size for each filetype
autocmd FileType *
    \ if &textwidth |
    \    exec 'match OverLength /\%' . string(&textwidth+2) . 'v.*/' |
    \ endif
查看更多
女痞
6楼-- · 2019-01-17 12:24

I needed the autocomand to work for me:

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

Also like the idea of using 75 if you are aiming at 80 columns in average.

Taken from:

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

Possible reason why it fails without BufEnter: highlight + match can only be used once. Multiple usage means that old ones are overridden. How to add multiple highlights

查看更多
登录 后发表回答