Como salvar as configurações do tipo de arquivo VIM para um arquivo que está sendo detectado incorretamente?

2

O arquivo de configuração do Apache para o meu site é chamado de mywebsite.com . Aparentemente, a extensão .com está fazendo com que o vim configure o tipo de arquivo incorreto como dcl , o que também torna a sintaxe realçada errada. Todos os meus outros arquivos de configuração do host estão identificados corretamente como arquivos Apache.

Eu sou capaz de :set filetype=apache e tudo parece ótimo, mas quando depois de fechar o vim e voltar para editar o tipo de arquivo está de volta para dcl novamente.

Além de renomear meu arquivo de configuração do host, existe uma solução para isso? Existe uma maneira de fazer vim lembrar o tipo de arquivo deste arquivo específico? Ou melhor ainda, existe uma maneira de corrigir essa detecção errada de tipo de arquivo?

EDIT 8/27/13 5:18 pm (já que o superusuário não está me permitindo postar .. o que eu devo adicionar, é estúpido)

Como complemento às respostas abaixo, gostaria de compartilhar o que fiz no final, que é modificar o arquivo de configuração principal /usr/share/vim/vim73/filetype.vim de:

au BufNewFile,BufRead *.com call s:BindzoneCheck('dcl')

para

au BufNewFile,BufRead *.com call s:BindzoneCheck('apache')

Eu percebo que isso pode não ser apropriado para todos os usuários, especialmente se você pretende escrever scripts dcl, mas no meu caso isso está bem.

    
por billynoah 27.08.2013 / 22:48

2 respostas

7

Uma maneira é adicionar uma modeline ao início ou ao final do arquivo. Um modelo Vim básico é assim:

# vim: ft=apache

O próprio caractere de comentário é ignorado pelo Vim. Há também uma sintaxe alternativa que também permite seguir os seguintes caracteres de comentário:

/* vim: set ft=apache: */

O Emacs e alguns outros editores usam -*- mode: apache -*- .

Se você quiser substituir a detecção do tipo de arquivo por extensão, adicione o seguinte ao seu ~/.vim/filetype.vim :

augroup filetypedetect
  au BufNewFile,BufRead *.com setl ft=apache
augroup END

(Não tenho certeza se setf apache ou setl ft=apache é melhor.)

Note que a detecção não está totalmente errada, é meramente imprecisa. O sistema operacional OpenVMS usa .com como a extensão dos arquivos "command" - bem como scripts shell ou arquivos batch - e eles são escritos na linguagem shell do OpenVMS, DCL ( Linguagem de Comando DIGITAL ).

    
por 27.08.2013 / 22:56
3

Como fazer isso é descrito no manual de referência embutido do Vim em

:help new-filetype

Como explicado na seção C.2., crie um arquivo chamado ~/.vim/filetype.vim com estes conteúdos:


if exists("did_load_filetypes")
    finish
endif
augroup filetypedetect
    au! BufRead,BufNewFile *.com setfiletype apache
augroup END

Isso reconhecerá qualquer arquivo terminado em .com como tipo de arquivo apache. Se você quiser que apenas mywebsite.com seja reconhecido, altere essa linha au para

au! BufRead,BufNewFile mywebsite.com setfiletype apache
    
por 27.08.2013 / 23:04