Dosya tipine göre varsayılan girintiyi nasıl değiştirebilirim?


34

Üzerinde çalıştığım dosya türüne göre farklı girintilere sahip olmak istiyorum. Örneğin, bir .cdosya üzerinde çalışırken girintimin 4 boşluk olmasını istiyorum. Gelen .htmldosyalar Sekmelerle işi (gerekir) istiyorum.

Bunu nasıl başarabilirim?

Yanıtlar:


25

En iyi yöntem bu ayarları koymaktır ~/.vim/after/ftplugin/<filetype>.vim.

HTML için (4 karakter genişliğinde sekme istediğinizi varsayarsak):

~/.vim/after/ftplugin/html.vim

setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab

Bir ftplugin kullanmak, otomatik komutları kullanmak için tercih edilir, çünkü Vim zaten filetype kontrolleri kendiliğinden kontrol eder ve yeterli ftplugin kaynağını sağlamaya çalışır, bu nedenle daha fazla kontrol yapmak ve tekerleği yeniden uygulamak için hiçbir neden yoktur.

-- Düzenle --

Sahip varsayarsak filetype plugin onGözlerinde farklı vimrcsen hangi - - Doğru filetype bulundu ve tampon için ayarlanmış bir kez Vim, düzenleme dosyalarının filetype saptamaya çalışır ve edecek, bu standart konumlarda gelen ftplugin kaynak deneyin:

$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim

Bunların hepsi otomatik olarak gerçekleşir , eğer filetipiniz Vim tarafından tanınırsa, herhangi bir filetip saptama mantığı eklemek için kesinlikle hiçbir neden yoktur: sadece ayarlarınızı doğru ftplugin'e eklemeniz yeterlidir.


Ftplugin'i bir şekilde aktifleştirmem gerekiyor mu yoksa dosya (lar) yaratacak mı?
DeltaLima

Elinizde olduğundan emin olun filetype plugin indent onGözlerinde farklı vimrc.
romainl,

1
@DeltaLima vim, ayarları kontrol etmek için geçtiği bir yola sahiptir. Ayarlandığı sürece filetype plugin on, vim'in yolu ftplugin/<filetype>.vimve içindeki after/ftplugin/<filetype>/vimdosyaları içerir .
davidlowryduda

@DeltaLima, lütfen düzenlememe bakın.
romainl,

14

Bunu, içindeki autocommands ile yapabilirsiniz .vimrc.

Örneğin, html_like_modeHTML dosyalarını düzenlemek için çeşitli şeyler ayarlayan bir işleve sahibim . Benim içinde .vimrc, var:

au BufNewFile,BufRead *.html call s:html_like_mode()

Bu dosya uzantısını kapatır. Etkinleştirmişseniz, dosya türünü de kapatabilirsiniz:

au FileType perl setlocal equalprg=perltidy

Gördüğünüz gibi, orada herhangi bir komutu yapmasını sağlayabilirsiniz. Böylece kolayca setlocal shiftwidth 4* .c dosyalarınız için bir şey yapabilirsiniz .


9

augroupİlgili otomatik komutları adlandırılmış gruplar halinde gruplamanıza izin verir. (Bkz . Otomatik Komut Grupları hakkında bilgi edinmek için buraya bakınız .) Otomatik kaynak augroupkodları eklemek için ~/.vimrc, onu her kaynak kaynağımızda kopya eklemeyecek şekilde kullanıyoruz.

augroup vimrc
  autocmd!
augroup END

autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4

2
Bunun ne işe yaradığını ve nasıl kurulacağını
Seth

3

Kullanılmış autocmd ve FileType

autocmd FileType html setlocal shiftwidth=4 tabstop=4
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.