vim não está pegando novos arquivos de sintaxe

1

Copiei este arquivo de sintaxe GLSL para /usr/share/vim/vim74/syntax/glsl.vim , suas permissões são -rw-r--r-- igual a outros arquivos de sintaxe.

Eu gvim /tmp/x.glsl , mas ela não ativa o realce da sintaxe GLSL como eu esperava.

Eu vou para Syntax > Show fileypes in menu e toda a gama de idiomas reconhecidos é aberta. Não há nada em "G" para "GLSL", nem existe nada em "O" para "OpenGL".

O que eu preciso fazer para que o vim perceba a nova especificação de destaque da sintaxe glsl.vim ?

    
por spraff 25.02.2018 / 23:42

1 resposta

0

As Syntax > Show filetypes in menu de fontes de ação $VIMRUNTIME/synmenu.vim . Se você abrir aquele, você verá que

  " The following menu items are generated by makemenu.vim.

Então, parece ser uma coisa estática criada durante o tempo de compilação do Vim. Infelizmente, ele não pega sintaxes adicionais ou específicas do usuário.

O diretório /usr/share/vim/ é gerenciado pelo gerenciador de pacotes da sua distribuição. Se você colocar arquivos lá, eles podem se perder quando você reinstalar ou atualizar o Vim. Não faça isso. A correção simples é colocá-lo em ~/.vim/syntax/ ; então só se aplica a você. [1]

O Vim distingue entre destaque de sintaxe e filetypes . Para que sua sintaxe adicionada seja aplicada, você precisa detectar arquivos GLSL. :help new-filetype informa como fazer isso.

Uma maneira (modular) de fazer isso é criar ~/.vim/ftdetect/glsl.vim com o seguinte conteúdo:

au BufRead,BufNewFile *.glsl        set filetype=glsl

Você também precisa do :filetype on e do :syntax on no seu ~/.vimrc , mas essas são configurações muito comuns, então você provavelmente já as tem.

[1] Se você realmente tiver um sistema multiusuário e precisar disponibilizá-lo em todo o sistema, coloque-o em outro local em 'runtimepath' . Dependendo da sua distribuição, já pode haver um caminho pré-configurado (por exemplo, em /etc/vim/vimrc no Debian), ou a oportunidade de fornecer configurações específicas do sistema (por exemplo, /etc/vim/vimrc.local ), e você pode aumentar o 'runtimepath' lá .

    
por 27.02.2018 / 18:33