Como posso saber qual arquivo de sintaxe está sendo usado?

50

O Vim é uma sintaxe que destaca meu arquivo de uma maneira engraçada, e quero saber qual arquivo de sintaxe é responsável por esse comportamento. Como descubro quais arquivos de sintaxe o vim carregou?

Edward Z. Yang
fonte

Respostas:

39

Para descobrir quais arquivos o Vim realmente carregou, execute

:scriptnames
garyjohn
fonte
Isso é útil. Agora, aqui está algo que não tenho certeza: se um arquivo de sintaxe aparecer nesta lista, é garantido que o arquivo de sintaxe está "ativo"? Eu posso ver alguns arquivos de sintaxe aqui.
Edward Z. Yang
7
Geralmente, apenas o último listado está "ativo", e talvez não seja, se você desativou o destaque da sintaxe. Para ver a sintaxe atualmente em vigor, execute :echo b:current_syntax. Para ver os itens de sintaxe atualmente em vigor, faça o que o Ingo sugeriu e execute :syntax list. O último pode ajudar se os itens de sintaxe de mais de um arquivo de sintaxe estiverem em vigor, como observou o Ingo.
garyjohn
1
No Mac OS XI, modifiquei o /usr/share/vim/vim73/filetype.vim. Depois de usar o comando acima, percebi que estava usando a versão do MacVim em ~/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim. Se você possui o MacVim instalado, modifique o arquivo correto.
Echamber
1
Você pode ter dois arquivos de sintaxe carregados com o mesmo nome. Por exemplo, o vim é enviado com destaque de sintaxe para o ColdFusion ( /usr/share/vim/vim81/syntax/cf.vimpara mim). Eu instalei um cf.vim personalizado porque o padrão é datado. :scriptnamesmostra os dois arquivos. O padrão é mais baixo na lista de scripts; no entanto, o primeiro está sendo usado. Se você olhar /usr/share/vim/vim81/syntax/cf.vim, há um guarda if exists("b:current_syntax") finish endif. Então, no meu caso, scriptnamesfoi útil, mas tive que me aprofundar um pouco mais.
Avejidah 5/06
31

A sintaxe do buffer atual pode ser consultada via

:setlocal syntax?

Geralmente (mas não necessariamente) corresponde ao tipo de arquivo do buffer ( :setlocal filetype?).

Para um olhar mais profundo,

:syntax list

mostra todas as definições de sintaxe (algumas sintaxes (podem) incluem sintaxes de outras linguagens, por exemplo, javatêm htmlpara a marcação de comentário JavaDoc).

Ingo Karkat
fonte
Isso é o que eu procurava com base no título da pergunta do OP. O OP, claro, esclarece na descrição que ele está procurando o arquivo de sintaxe real, mas agradeço que você tenha deixado isso aqui, pois é uma das primeiras respostas nos mecanismos de pesquisa.
verboze
4

Você pode ver quais tipos de arquivos são usados ​​atualmente e por

:verbose set ft ?

O plug-in que manipula o tipo de arquivo provavelmente está localizado em

:e $VIMRUNTIME\ftplugin
Lieven Keersmaekers
fonte