Подсветка синтаксиса шаблоном

#vim

#vim

Вопрос:

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

  autocmd Syntax * highlight LeadingSpaces guibg=#afd7af ctermbg=Black
 autocmd Syntax * syntax match LeadingSpaces /^t zs  /
  

Проблема в том, что это не всегда работает. Например, внутри комментариев к блокам выделение не вступает в силу:

  test  // the extra space before "test" gets highlighted
/**
 * test  // here the extra spaces aren't highlighted
 */
  

Если у кого-нибудь есть идея, что я делаю не так, это было бы здорово. В противном случае, я думаю, мне придется вернуться к обычному сопоставлению.

Ответ №1:

У меня была похожая проблема (но отображать конечные пробелы в конце строки). Чтобы решить эту проблему, вместо использования синтаксиса, который противоречит фактическому синтаксису, вы можете просто выделить регулярное выражение с помощью matchadd .

Это выглядит следующим образом (повторное использование ваших лидирующих пространств)

 autocmd BufNew * call matchadd ('LeadingSpaces', '^t zs  ')
  

Комментарии:

1. В итоге я получил аналогичное решение, поэтому я принимаю это. Спасибо