20090509

Подсветка табуляций между пробелами и концевых пробелов в Vim

Продолжаю тему вспомогательной подсветки в Vim. Прошлый раз писал как показать длинные (> 80 символов) строчки в Vim.

Другая зараза для исходного кода — концевые пробелы (trailing whitespace) и табуляции вперемежку с пробелами. Для их подсветки у меня в ~/.vimrc есть вот такие выделения:
" highlight trailing spaces
au BufNewFile,BufRead * let b:mtrailingws=matchadd('ErrorMsg', '\s\+$', -1)
" highlight tabs between spaces
au BufNewFile,BufRead * let b:mtabbeforesp=matchadd('ErrorMsg', '\v(\t+)\ze( +)', -1)
au BufNewFile,BufRead * let b:mtabaftersp=matchadd('ErrorMsg', '\v( +)\zs(\t+)', -1)
Первое включает подсветку любых пробелов на конце строки. Второе и третье подсвечивают табуляции, перед которыми или после которых есть пробелы. Понятно, что вместо * можно явно прописать типы файлов, для которых это должно работать, но единственное место, где мне это не нужно — это буферы со справкой. Поэтому у меня сделано сейчас так:
" disable matches in help buffers
au BufEnter,FileType help call clearmatches()
Выглядит это так:



Подобным же целям служат, но иначе работают, скрипт spacehi.vim и рецепт #396 (для подсветки пробелов).