El enfoque preferido es crear un ~/.vim/filetype.vim
, como se menciona :help 43.2
y 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_filetypes
no 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
.
if
declaración? Si lo dejo, los autocmds no se ejecutan para mí.au!
declaraciones en el grupo, a saber,au! BufRead,BufNewFile *.py setfiletype python
y en la línea a continuaciónau! BufRead,BufNewFile *.tpp setfiletype cpp
. Pero solo el segundo realmente funciona. La edición de.py
archivos 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 ft
ese 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=fortran
tratar los archivos de CUDA Fortran como FortranTambién se podría tener:
au BufRead,BufNewFile *.tpp setlocal filetype=cpp
en.vimrc
tal forma que al abrir un archivo con.tpp
extensión, el tipo de archivo se configura para C ++fuente
BufRead,BufNewFile
lugar deBufEnter
?BufRead,BufNewFile
antesBufEnter
porque 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,setlocal
así que también omití eso en mi respuesta. (Podría haber interpretado esto completamente mal, feliz de escuchar más discusión)