This is difficult, because you have to specify (in a single regular expression)
- the condition of paragraphs (which I assume to be lines separated by at most a single newline; i.e. empty lines create new paragraphs)
- the counting of characters (highlight after 140 characters)
Here's the best I've achieved; it still somehow matches "into" following paragraphs if the current one is too small:
:match ColorColumn /\%(\%^\|\n\n\)\%(\%(.\+\n\)*.*\)\&\_.\{140}\%(\zs.\|\n\zs.\)/
Explanation:
- anchored at the beginning of the buffer or an empty line
- match non-empty line(s)
- and additional characters AND
- match 140 characters and/or newlines
- then start a match on the following character, or if that it a newline (which doesn't show up right), the next character after it
I'd be happy if someone improves on this.