Множитель для 1 или более совпадений равен \+
; Вы забыли обратную косую черту (или \v
модификатор «очень волшебный»). Использование \ze
в конце излишне. ^
совпадения в каждом начале строки, \n
начиная только со второй строки. Имейте в виду, что Vim использует специальный диалект регулярного выражения, поэтому, как говорят различные веб-сайты, вам может понадобиться адаптация. Эти :help pattern
страницы являются лучшими и авторитетным справочным.
syn match header /^#\+\zs.*/
Кроме того, добавление вашего синтаксиса может быть скрыто существующими правилами синтаксиса. Вы можете попробовать добавить containedin=ALL
, но это не общее решение. Возможно, вам придется проанализировать существующий синтаксис и разработать специальное решение для каждого синтаксиса. В качестве альтернативы вы можете использовать :match
команду. Это работает поверх (и независимо) подсветки синтаксиса. Недостатком является то, что это локальное окно, поэтому вам нужна :autocmd
магия, если вы хотите применить это только к определенным буферам или также к разделению окон.
match header /^#\+\zs.*/
критика стиля
С вашим au BufRead,BufNewFile *.txt syn match
, вашим смешением нескольких аспектов: обнаружение типов файлов (сопоставление *.txt
(здесь: неявный) тип файлов), настройка типов файлов, подсветка синтаксиса). Было бы чище (и более расширяемо) отделить вещи:
- Определение
text
типов файлов:au BufRead,BufNewFile *.txt setf text
. Это обнаружение может уже существовать в вашей версии Vim. - Определите подсветку синтаксиса (или расширение) в
~/.vim/syntax/text.vim
(или~/.vim/after/syntax/text.vim
для расширения существующего синтаксиса).