Как бы я выделил vim лишним пробелом и всеми вкладками? - PullRequest
7 голосов
/ 08 сентября 2011

Я нашел следующий код, который выделит все ненужные пробелы, но я действительно хочу, чтобы он также выделил все вкладки в моем коде.Я играл с большим количеством вариантов, которые не работали, но я не мог найти регулярное выражение, которое бы выполняло и то, и другое.Любые идеи?

highlight RedundantWhitespace ctermbg=red guibg=red
match RedundantWhitespace /\s\+$\| \+\ze\t/

Редактировать: добавление выборок по запросу:

Хорошо, поэтому в примерах ниже я использую \ t для представления табуляции и% для представления конечного пробела, который я хочу vimвыделить красным цветом.

/tOh hi here is some text%%%%
/t/tHere is some indented text%%%

Итак, в первой строке есть 1 вкладка, в которой их пробелы должны быть выделены красным, а 4 конечных пробела выделены красным.Во второй строке есть 2 вкладки и 3 конечных пробела, которые выделены красным.

Ответы [ 3 ]

8 голосов
/ 08 сентября 2011

Я бы рекомендовал использовать listchars вместо подсветки синтаксиса. Это будет работать по всем направлениям для всех типов файлов. Вы также можете использовать listchars для конечных пробелов, а также связываться с цветами:

set listchars=tab:»·,trail:·
set list
hi SpecialKey ctermbg=red ctermfg=red guibg=red guifg=red

Обратите внимание, что цвета фона и переднего плана здесь одинаковы, поэтому в итоге вы видите красные "блоки" для конечного пространства и вкладок.

4 голосов
/ 08 сентября 2011

Из вашего комментария к другому ответу:

Нет, я ищу его, чтобы выделить каждую вкладку и все пробелы.Я действительно хочу определить все вкладки

Делает ли это то, что вы хотите?

match RedundantWhitespace /\s\+$\|\t/

По-человечески, это:

Соответствуйте любым пробелам в конце строки или любым вкладкам в любом месте

Кажется, вы выбираете пробел в ваших примерах.

1 голос
/ 08 сентября 2011

Я думаю, что вы хотите использовать \zs (для «начала») вместо \ze (для «конца»):

highlight RedundantWhitespace ctermbg=red guibg=red
match RedundantWhitespace /\s\+$\| \+\zs\t/

Тем не менее, будут выделены только табуляции, которым предшествует один или несколько пробелов. Не уверен, что ты этого хочешь или нет. Ниже приведена версия, в которой будут выделены все вкладки:

highlight RedundantWhitespace ctermbg=red guibg=red
match RedundantWhitespace /\s\+$\|\t/
...