El enfoque preferido es crear un ~/.vim/filetype.vim, como se menciona :help 43.2y explica en la Pregunta frecuente 26.8 de Vim :
  Una mejor alternativa al enfoque anterior es crear un archivo filetype.vim en el directorio ~ / .vim (o en uno de los directorios especificados en la opción 'runtimepath') y agregar las siguientes líneas: 
" my filetype file
if exists("did_load_filetypes")
    finish
endif
augroup filetypedetect
    au! BufRead,BufNewFile *.x       setfiletype c
augroup END
Editar:
El did_load_filetypesno debería causarte ningún problema; solo requeriría un reinicio de Vim después de cambiarlo.
Es necesario para evitar la carga múltiple e innecesaria de este archivo, y se hereda del archivo base ($ VIMRUNTIME / filetype.vim):
" Vim support file to detect file types
"
" Maintainer:   Bram Moolenaar <[email protected]>
" Last Change:  2014 Jun 12
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
  finish
endif
let did_load_filetypes = 1
Para más información consultar :help new-filetype.
                 
                
                
                 
ifdeclaración? Si lo dejo, los autocmds no se ejecutan para mí.au!declaraciones en el grupo, a saber,au! BufRead,BufNewFile *.py setfiletype pythony en la línea a continuaciónau! BufRead,BufNewFile *.tpp setfiletype cpp. Pero solo el segundo realmente funciona. La edición de.pyarchivos no establece el tipo de archivo enpython. No soy exactamente un vim-guru, así que probablemente me estoy perdiendo algo.au BufNewFile,BufRead *.py,*.pyw setf python, por lo que tu primera línea es irrelevante. Su problema probablemente esté en otra parte."Editing .py files does not set the file type to python"- ¿Cuál es el resultado de:set ftese caso? Si no es Python, intente seguir el procedimiento en Vim-FAQ 2.5 - Tengo un problema "xyz" (algo) con VimPodrías hacer (en tu global
.vimrc):fuente
autocmd BufEnter *.cuf :setlocal filetype=fortrantratar los archivos de CUDA Fortran como FortranTambién se podría tener:
au BufRead,BufNewFile *.tpp setlocal filetype=cppen.vimrctal forma que al abrir un archivo con.tppextensión, el tipo de archivo se configura para C ++fuente
BufRead,BufNewFilelugar deBufEnter?BufRead,BufNewFileantesBufEnterporque en los documentos (:help BufEnter) dice: "BufEnter: .... También se ejecuta al comenzar a editar un búfer, después de los comandos automáticos BufReadPost". donde BufReadPost es sinónimo de BufRead . Además, no creo que:se requiera antes,setlocalasí que también omití eso en mi respuesta. (Podría haber interpretado esto completamente mal, feliz de escuchar más discusión)