Preferowanym podejściem jest utworzenie ~/.vim/filetype.vim
, jak wspomniano :help 43.2
i wyjaśniono w Vim FAQ 26.8 :
Lepszą alternatywą dla powyższego podejścia jest utworzenie pliku filetype.vim w katalogu ~ / .vim (lub w jednym z katalogów określonych w opcji „runtimepath”) i dodanie następujących wierszy:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.x setfiletype c
augroup END
Edytować:
Nie did_load_filetypes
powinno to powodować żadnych problemów; wymagałoby to ponownego uruchomienia Vima dopiero po zmianie.
Jest to konieczne, aby uniknąć wielokrotnego i niepotrzebnego ładowania tego pliku, i jest dziedziczony z pliku podstawowego ($ 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
Aby uzyskać więcej informacji, sprawdź :help new-filetype
.
if
oświadczenie? Jeśli zostawię to, autocmds nie są dla mnie wykonywane.au!
oświadczenia w grupie, a mianowicieau! BufRead,BufNewFile *.py setfiletype python
w wierszu poniżejau! BufRead,BufNewFile *.tpp setfiletype cpp
. Ale tylko drugi faktycznie działa. Edycja.py
plików nie ustawia typu pliku napython
. Nie jestem do końca vim-guru, więc pewnie czegoś mi brakuje.au BufNewFile,BufRead *.py,*.pyw setf python
, więc twój pierwszy wiersz jest nieistotny. Twój problem jest prawdopodobnie gdzie indziej."Editing .py files does not set the file type to python"
- jaki jest wynik:set ft
tej sprawy? Jeśli nie jest to Python, spróbuj wykonać procedurę opisaną w Vim-FAQ 2.5 - Mam problem zMożesz zrobić (w swoim globalnym
.vimrc
):źródło
autocmd BufEnter *.cuf :setlocal filetype=fortran
traktować pliki CUDA Fortran jak FortranMożna również mieć:
au BufRead,BufNewFile *.tpp setlocal filetype=cpp
w.vimrc
taki sposób, że po otwarciu pliku z.tpp
rozszerzeniem ustawiony jest typ pliku dla C ++źródło
BufRead,BufNewFile
zamiastBufEnter
?BufRead,BufNewFile
wyprzedzić,BufEnter
ponieważ w docs (:help BufEnter
) napisano: „BufEnter: .... Wykonane również podczas rozpoczynania edycji bufora, po komendach automatycznych BufReadPost”. gdzie BufReadPost jest synonimem BufRead . Ponadto nie wierzę, że:
jest to wymagane wcześniej,setlocal
więc w odpowiedzi na to pominąłem. (Mogłem zinterpretować to całkowicie błędnie, ciesząc się z dalszej dyskusji)