L'approche préférée consiste à créer un ~/.vim/filetype.vim
, comme mentionné :help 43.2
et expliqué dans la FAQ 26.8 de Vim :
Une meilleure alternative à l'approche ci-dessus consiste à créer un fichier filetype.vim dans le répertoire ~ / .vim (ou dans l'un des répertoires spécifiés dans l'option 'runtimepath') et ajoutez les lignes suivantes:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.x setfiletype c
augroup END
Éditer:
Le did_load_filetypes
ne devrait pas vous causer des problèmes; il ne nécessiterait un redémarrage de Vim qu'après avoir été modifié.
Il est nécessaire pour éviter le chargement multiple et inutile de ce fichier, et il est hérité du fichier de 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
Pour plus d'informations, consultez :help new-filetype
.
if
déclaration? Si je le laisse, les autocmds ne sont pas exécutés pour moi.au!
déclarations dans le groupe, à savoirau! BufRead,BufNewFile *.py setfiletype python
et dans la ligne ci-dessousau! BufRead,BufNewFile *.tpp setfiletype cpp
. Mais seul le second fonctionne réellement. La modification de.py
fichiers ne définit pas le type de fichier surpython
. Je ne suis pas exactement un vim-gourou donc je manque probablement quelque chose.au BufNewFile,BufRead *.py,*.pyw setf python
, donc votre première ligne n'est pas pertinente. Votre problème est probablement ailleurs."Editing .py files does not set the file type to python"
- quelle est la sortie de:set ft
ce cas? S'il ne s'agit pas de python, essayez de suivre la procédure dans Vim-FAQ 2.5 - J'ai un problème "xyz" (certains) avec VimVous pourriez faire (dans votre global
.vimrc
):la source
autocmd BufEnter *.cuf :setlocal filetype=fortran
traiter les fichiers CUDA Fortran comme FortranOn pourrait également avoir:
au BufRead,BufNewFile *.tpp setlocal filetype=cpp
dans leur.vimrc
tel que lors de l'ouverture d'un fichier avec l'.tpp
extension, filetype est défini pour C ++la source
BufRead,BufNewFile
place deBufEnter
?BufRead,BufNewFile
avantBufEnter
car dans la documentation (:help BufEnter
), il est indiqué: "BufEnter: .... Également exécuté lors du démarrage de l'édition d'un tampon, après les autocommandes BufReadPost." où BufReadPost est synonyme de BufRead . De plus, je ne pense pas que ce:
soit nécessaire auparavantsetlocal
, j'ai donc omis cela dans ma réponse. (J'aurais peut-être mal interprété cela, heureux d'entendre plus de discussions)