2014-03-28 90 views
0

我知道如何突出長線。或者:如何突出長段落?

:match ErrorMsg '\%>140v.\+' 

我相當喜歡的 「colorcolumn方式」:

:set colorcolumn=140 

所以,舉例來說,文本:

Vim的是B.書面文本編輯器Moolenaar於1991年首次公開發布了 。它基於Unix編輯器共同的vi編輯器 系統。 Vim是免費和開源的軟件。

被強調開始用「vim是免費的,等等......」

但我怎麼能實現一個段落相同的結果(在這個例子中,3號線),如:

[Empty line] 
Vim is a text editor written by B. Moolenaar and first released publicly in 1991. 
It is based on the vi editor common to Unix-like systems. 
Vim is free and open source software 
[Empty line] 

在此先感謝

+0

那麼整個文檔將顯示在相同(突出顯示)的顏色正確嗎?因爲您的文檔由「段落」和空行組成。或者我誤解了這個問題? – Kent

+0

@Kent:就是這樣。而這些段落可能是(這是純文本,而不是代碼)由1或2或3等行組成,這些段落由一行分隔。我希望在這個例子中看到所有段落> 140個字符。 – ThG

回答

1

這是困難的,因爲你必須指定(在一個單一的正則表達式)

  1. 條件段落(我認爲是由最多一個換行符分隔的行;即空行創建新的段落)
  2. 後140個字符的字符計數(高亮)

下面是我取得的最好;它仍然在某種程度上符合「到」下面的段落,如果當前太小:

:match ColorColumn /\%(\%^\|\n\n\)\%(\%(.\+\n\)*.*\)\&\_.\{140}\%(\zs.\|\n\zs.\)/ 

說明:

  • 在緩衝或空行
  • 匹配非空的開始掛靠線(S)
  • 和附加字符和
  • 匹配140點的字符和/或換行符
  • 然後開始毫安tch上的下一個字符,或者如果它是一個換行符(它沒有顯示正確的),它後面的下一個字符

如果有人對此有所改進,我會很高興。

+0

非常感謝您的回答。但是,似乎有一點小故障:它只適用於3行的段落。這可能是由於「它仍然以某種方式匹配」到「如果當前版本太小」的後續段落中。但正如我剛剛評論@Kent(我應該更精確),這些段落可能由1或2或3等組成......行,這些段落由一行分隔。段落<140個字符應被視爲正確。這引起我問你 - 如果你有足夠的時間 - 解釋你的正則表達式。無論如何,再次感謝。 – ThG

+0

謝謝,我添加了一個解釋;在理論上,正則表達式應該工作(我認爲);也許一些Vim的實現限制阻止了它的使用。 –

+0

再次嘗試,它很好地工作。感謝您的答案,併爲您的解釋(順便說一句,這個正則表達式不適合心疼的初學者,像我一樣...) – ThG