Der bevorzugte Ansatz ist ~/.vim/filetype.vim
, wie :help 43.2
in Vim FAQ 26.8 erwähnt und erläutert, Folgendes zu erstellen :
Eine bessere Alternative zum obigen Ansatz ist das Erstellen einer Datei mit dem Dateityp .vim im Verzeichnis ~ / .vim (oder in einem der in der Option 'runtimepath' angegebenen Verzeichnisse) und das Hinzufügen der folgenden Zeilen:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.x setfiletype c
augroup END
Bearbeiten:
Das did_load_filetypes
sollte dir keine Probleme bereiten; Es würde nur einen Neustart von Vim erfordern, nachdem es geändert wurde.
Dies ist erforderlich, um ein mehrfaches und unnötiges Laden dieser Datei zu vermeiden. Sie wird von der Basisdatei ($ VIMRUNTIME / filetype.vim) geerbt:
" 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
Weitere Informationen finden Sie unter :help new-filetype
.
if
Aussage? Wenn ich es drin lasse, werden die AutocMDS nicht für mich ausgeführt.au!
Aussagen in der Gruppe machen,au! BufRead,BufNewFile *.py setfiletype python
und zwar in der Zeile darunterau! BufRead,BufNewFile *.tpp setfiletype cpp
. Aber nur der zweite funktioniert tatsächlich. Durch das Bearbeiten von.py
Dateien wird der Dateityp nicht auf festgelegtpython
. Ich bin nicht gerade ein Vim-Guru, also vermisse ich wahrscheinlich etwas.au BufNewFile,BufRead *.py,*.pyw setf python
, sodass Ihre erste Zeile irrelevant ist. Dein Problem ist wahrscheinlich woanders."Editing .py files does not set the file type to python"
- Was ist die Ausgabe:set ft
in diesem Fall? Wenn es sich nicht um Python handelt,Sie könnten (in Ihrem globalen
.vimrc
) tun :quelle
autocmd BufEnter *.cuf :setlocal filetype=fortran
CUDA Fortran Dateien als FortranMan könnte auch haben:
au BufRead,BufNewFile *.tpp setlocal filetype=cpp
in ihnen ,.vimrc
so dass eine Datei mit beim Öffnen.tpp
Erweiterung, Dateityp für eingestellt ist C ++quelle
BufRead,BufNewFile
anstelle vonBufEnter
?BufRead,BufNewFile
vor ,BufEnter
weil in der Dokumentation (:help BufEnter
) heißt es: „BufEnter: .... auch dann ausgeführt , wenn zu bearbeiten einen Puffer, beginnend nach . den BufReadPost automatischen Befehlen“ wo BufReadPost ist ein Synonym für BufRead . Außerdem glaube ich nicht, dass das:
vorher erforderlich ist,setlocal
deshalb habe ich das auch in meiner Antwort weggelassen. (Ich hätte dies möglicherweise völlig falsch interpretiert, freue mich über weitere Diskussionen)