Pendekatan yang disukai adalah membuat ~/.vim/filetype.vim
, sebagaimana disebutkan dalam :help 43.2
dan dijelaskan dalam Vim FAQ 26.8 :
Alternatif yang lebih baik untuk pendekatan di atas adalah membuat file filetype.vim di direktori ~ / .vim (atau di salah satu direktori yang ditentukan dalam opsi 'runtimepath') dan tambahkan baris berikut:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.x setfiletype c
augroup END
Edit:
The did_load_filetypes
seharusnya tidak menyebabkan gangguan apa pun; itu hanya akan membutuhkan Vim restart setelah diubah.
Hal ini diperlukan untuk menghindari pemuatan file yang banyak dan tidak perlu, dan ini diwarisi dari file dasar ($ 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
Untuk informasi lebih lanjut, periksa :help new-filetype
.
if
pernyataan itu? Jika saya membiarkannya, autocmds tidak dieksekusi untuk saya.au!
pernyataan dalam grup, yaituau! BufRead,BufNewFile *.py setfiletype python
dan di baris di bawah iniau! BufRead,BufNewFile *.tpp setfiletype cpp
. Tetapi hanya yang kedua yang benar-benar berfungsi. Mengedit.py
file tidak mengatur jenis file menjadipython
. Aku bukan vim-guru jadi aku mungkin melewatkan sesuatu.au BufNewFile,BufRead *.py,*.pyw setf python
, jadi baris pertama Anda tidak relevan. Masalah Anda mungkin di tempat lain."Editing .py files does not set the file type to python"
- apa output dari:set ft
kasus itu? Jika bukan python, coba ikuti prosedur di Vim-FAQ 2.5 - Saya punya masalah "xyz" (beberapa) dengan VimAnda dapat melakukannya (di global Anda
.vimrc
):sumber
autocmd BufEnter *.cuf :setlocal filetype=fortran
untuk memperlakukan file CUDA Fortran sebagai FortranSatu juga bisa memiliki:
au BufRead,BufNewFile *.tpp setlocal filetype=cpp
di mereka.vimrc
sehingga saat membuka file dengan.tpp
ekstensi, filetype ditetapkan untuk C ++sumber
BufRead,BufNewFile
bukanBufEnter
?BufRead,BufNewFile
sebelumnyaBufEnter
karena dalam dokumen (:help BufEnter
) menyatakan: "BufEnter: .... Juga dieksekusi ketika mulai mengedit buffer, setelah perintah otomatis BufReadPost." di mana BufReadPost identik dengan BufRead . Selain itu, saya tidak percaya:
diperlukan sebelumsetlocal
jadi saya juga dihilangkan dalam jawaban saya. (Saya mungkin telah menafsirkan ini sepenuhnya salah, senang mendengar diskusi lebih lanjut)