O multiplicador para 1 ou mais correspondências é \+
; você esqueceu a barra invertida (ou o modificador \v
"muito mágico"). Usar \ze
no final é supérfluo. ^
corresponde a todos os começos da linha \n
apenas começando na segunda linha. Por favor, esteja ciente de que o Vim usa um dialeto de expressão regular especial, então, o que vários sites da Web dizem que você pode precisar de adaptação. As :help pattern
páginas são as melhores e autoritativas referências.
syn match header /^#\+\zs.*/
Além disso, sua adição de sintaxe pode estar obscurecida pelas regras de sintaxe existentes. Você pode tentar acrescentar containedin=ALL
, mas essa não é uma solução geral. Talvez seja necessário analisar a sintaxe existente e criar uma solução especial para cada sintaxe. Como alternativa, você pode usar o comando :match
. Isso funciona no topo (e independente) do realce de sintaxe. A desvantagem é que isso é window-local , então você precisa de :autocmd
magic se quiser aplicar isso apenas a determinados buffers, ou também a splits de janelas.
match header /^#\+\zs.*/
crítica de estilo
Com seu au BufRead,BufNewFile *.txt syn match
, você mescla vários aspectos: detecção de tipo de arquivo (o mapeamento de *.txt
para um tipo de arquivo (aqui: implícito)), personalização de tipo de arquivo, realce de sintaxe. Seria mais limpo (e mais extensível) separar as coisas:
- Defina um% fil_de% filetype:
text
. Esta detecção pode já existir na sua versão do Vim. - Defina o destaque da sintaxe (ou extensão) em
au BufRead,BufNewFile *.txt setf text
(ou~/.vim/syntax/text.vim
para estender uma sintaxe existente).