2008-12-27 68 views
17

我想vim爲我着色「長」行。以80列爲例,我想突出顯示超過這個長度的行。 (1)不起作用,(2)使用Perl的正則表達式語法來說明我的觀點,因爲我不太瞭解Vim:Vim語法着色:如何僅突出顯示長線?

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

這(至少在我腦海中)應該標記超過80列的行。我最理想的是能夠僅對超過80列的行進行着色,所以如果一行是85列,那麼第81列到第85列將被突出顯示。

我相信Vim可以做到這一點,只是不在我掌舵。

+1

+1。偉大的問題!現在,我不知道答案,但我會繼續關注。 – PEZ 2008-12-27 16:59:05

+1

也許colorcolumn可能是你的東西。 – 2012-09-15 11:21:45

回答

26

我需要autocomand爲我工作:

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:亮點+比賽只能使用一次。多次使用意味着舊版本被覆蓋。 How to add multiple highlights

1

我使用下面的方法:

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

(這些匹配一些GIT中預先承諾鉤)

第二行應interrest的給你。

+0

謝謝。這(/^.\{120\}.*$/)突出顯示了整條線 - 只是從字符121開始突出顯示的任何想法? – 2008-12-27 16:58:06

+0

對不起,不知道。問題在於它可能不適用於正則表達式。你知道,它可能會需要堆疊機器。 – terminus 2008-12-27 17:07:50

+0

您只能突出顯示80個第一個字符。我知道,不完全是你想要的,但無論如何你都會看清楚過多。 – PEZ 2008-12-27 17:28:17

15

我在我的vimrc中有這個。
我在這裏找到:Vim 80 column layout concerns

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

您可能希望將顏色調整自己的喜好。

1

它使用一個自動調整過長值以符合您的文件類型。

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