Estender a sintaxe do vim para apenas alguns arquivos *?

1

Nosso software tem muitos arquivos de configuração .xml. O Vim colore esses arquivos usando, por exemplo, %código%. Mas podemos personalizar a coloração para apenas esses arquivos, e não para todos arquivos .xml?

(Um exemplo de tal customização seria colorir o texto entre /usr/share/vim/vim74/syntax/xml.vim e <schmoo> tags. Mas essa questão não é sobre como cor, nem é sobre XML. Espero para uma resposta que se aplica igualmente bem ao Python ou ao YAML ou a centenas de outros formatos.)

Um outro arquivo no diretório de arquivos .xml pode substituir ou estender </schmoo> ? (Improvável: runtimepath não menciona o diretório atual;syntax/xml.vim ou autochdir parecem ajudar.)

E algo em uma variável de ambiente, ou em um arquivo .xml em si (na parte superior ou inferior; ou inline como jsbegin / jsend em Realce de sintaxe personalizada do Vim, inclui outra sintaxe de idioma em um intervalo especificado )?

Ou as extensões devem entrar em cada usuário getcwd() (que é usado para todos arquivos .xml)? Isso seria suboptimal, mas tolerável para extensões especializadas o suficiente para não colidir com outras coisas (como "schmoo" acima).

Relacionados: Como posso configurar destaque de sintaxe para um idioma personalizado no vim?

Referência: link

    
por Camille Goudeseune 17.06.2015 / 17:42

1 resposta

2

Certifique-se de que o modeline do vim esteja ativado. :set modeline? deve responder modeline em vez de nomodeline . Se necessário, configure-o no seu vimrc. (Preocupações de segurança são praticamente obsoletas até agora.)

Em um determinado arquivo .xml, inclua esta linha: // vim: filetype=xmlWithSchmoos (Se não for xml, substitua // pelo que começar um comentário nesse idioma.)

Crie ~/.vim/syntax/xmlWithSchmoos.vim ou /usr/share/vim/vim74/syntax/xmlWithSchmoos.vim , contendo a linha única :so $VIMRUNTIME/syntax/xml.vim .

Anexe as sub-rotinas a xmlWithSchmoos.vim . Por exemplo, para tags schmoo vermelhas e o que há entre elas, anexe:

:syntax region xyzzy start=/<schmoo>/ end=/<\/schmoo>/
:highlight xyzzy ctermfg=red guifg=red

Claro, renomeie para algo significativo para os espaços reservados schmoo , xml , xmlWithSchmoos e xyzzy .

    
por 23.06.2015 / 17:27