Jawaban:
Metode terbaik adalah menempatkan pengaturan tersebut ~/.vim/after/ftplugin/<filetype>.vim
.
Untuk HTML (dengan asumsi Anda menginginkan tab dengan lebar 4 karakter):
~/.vim/after/ftplugin/html.vim
setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab
Menggunakan ftplugin lebih disukai daripada menggunakan autocommands karena Vim sudah melakukan pemeriksaan tipe file dengan sendirinya dan sudah mencoba untuk mencari ftplugin yang memadai sehingga tidak ada alasan untuk memaksa lebih banyak lagi pemeriksaan dan mengimplementasikan kembali roda.
- edit -
Dengan asumsi Anda memiliki filetype plugin on
di vimrc
- Anda harus - Vim akan mencoba untuk mendeteksi tipe file dari file yang Anda edit dan, setelah tipe file yang benar ditemukan dan ditetapkan untuk buffer, cobalah untuk mencari ftplugin yang sesuai di lokasi standar ini:
$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim
Semua itu terjadi secara otomatis jadi, jika tipe file Anda dikenali oleh Vim, sama sekali tidak ada alasan untuk menambahkan logika deteksi tipe file: cukup tambahkan pengaturan Anda ke ftplugin yang tepat dan Anda baik-baik saja.
filetype plugin indent on
di vimrc
.
filetype plugin on
diatur, jalur vim menyertakan ftplugin/<filetype>.vim
dan after/ftplugin/<filetype>/vim
file di jalurnya.
Anda dapat melakukan ini dengan perintah otomatis di .vimrc
.
Sebagai contoh, saya memiliki fungsi html_like_mode
yang mengatur berbagai hal untuk mengedit file HTML. Di saya .vimrc
, saya punya:
au BufNewFile,BufRead *.html call s:html_like_mode()
Itu kunci dari ekstensi file. Anda juga dapat mengunci jenis file, jika Anda mengaktifkannya:
au FileType perl setlocal equalprg=perltidy
Seperti yang dapat Anda lihat, Anda dapat membuatnya melakukan perintah apa pun di sana. Jadi Anda dapat dengan mudah melakukan setlocal shiftwidth 4
untuk file * .c Anda.
augroup
memungkinkan Anda untuk mengelompokkan autocommand terkait ke dalam grup bernama. (Lihat di sini untuk mempelajari tentang Grup Perintah Otomatis.) Kami menggunakan augroup
s untuk menambahkan ~/.vimrc
perintah otomatis dengan cara yang tidak akan menambahkan duplikat setiap kali kita sumbernya.
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4