De acordo com a resposta aceita a esta pergunta , estou tentando usar modelines no vim para forçar a detecção de tipos de arquivos em alguns arquivos.
Por exemplo, na parte superior de um arquivo denominado gitconfig
(observe que não há um avanço .
), tenho a seguinte linha:
# vim: set filetype=gitconfig :
modeline
está ativado no meu sistema. No entanto, quando abro o arquivo no vim, set filetype?
retorna conf
, em vez do esperado gitconfig
.
É possível que outras partes da minha configuração do vim (por exemplo, filetype.vim) estejam causando esse comportamento estranho?
Editado em resposta a comentários:
set compatible?
retorna nocompatible
set modeline?
retorna modeline
verbose set filetype?
retorna:
filetype=conf
Last set from /usr/share/vim/vim73/filetype.vim
Não entendo por que o plug-in de tipo de arquivo amplo do sistema estaria substituindo o que defini no próprio arquivo.
Uma observação final: esta é a versão do Vim 7.3 fornecida com o OSX.
A última versão do MacVim sendo executada no mesmo sistema, usando o mesmo .vimrc
comportamento esperado, com set ft?
retorno filetype=gitconfig
.
set modeline?
não imprimenomodeline
?compatible
. Vale a pena conferir também.Respostas:
Portanto, após algumas pesquisas, verifica-se que o sistema
vimrc
fornecido com o OSX define amodelines
variável (observe os à direita) como 0. Essa variável controla o número de linhas em um arquivo que são verificadas quanto a comandos de configuração. Definir modelines para um valor diferente de zero na minha.vimrc
resolveu o problema.Saída total, para os curiosos: a saída de
vim --version
me pediu para verificar o sistema vimrc:Olhando para o sistema vimrc:
Me levou à
modelines
variável. Parece que o MacVim não origina esse arquivo do sistema (talvez procurando um GVIMRC do sistema em vez disso?:help startup
Não está claro).fonte
Para que isso funcione no meu sistema macOS, tive que definir algumas configurações em ~ / .vimrc:
Onde ' modeline ' permite o uso de configurações no arquivo, e ' modelines = # ' define o número de linhas que o vim / vi verificará nos comandos set.
Depois que esses parâmetros foram definidos, eu pude usar a sintaxe como a linha abaixo nos meus arquivos para substituir os parâmetros definidos.
fonte