Vim boşluk tercihlerini filetype ile ayarlama


155

İşimde, girintileme için ev stilini takip etmem gerekiyor, ki bu şöyle:

  • HTML ve ruby ​​kodlarken 2 boşluk
  • javascript kodlanırken sekmeler, tabwidth = 4 önerilir

Dosya tipi başına farklı boşluk tercihlerini belirtmenin en iyi yolu nedir?



Tüm bu cevaplar beni daha da karıştırdı. Sorun, seçeneklerin tercih edilmesidir. Kabul edilen cevabın hoş bir sözdizimi var. Bu mükemmel bir rehberdi: vimcasts.org/transcripts/2/en
Mikael Lindlöf

Yanıtlar:


245

birçok yol var, ama burada basit, anlaşılması kolay bir yol var. bu satırları şuna ekle ~/.vimrc:

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4

27
ts = 'dosyadaki <Sekme>' nin kullandığı boşluk sayısı 'sts =' <Tab> düzenlenirken kullanılan boşluk sayısı 'sw =' ayrıntılar için (otomatik) girinti adımı için kullanılacak boşluk sayısı 'bölümüne bakın: vimdoc.sourceforge .net / htmldoc / quickref.html # seçenek listesi
zdsbs

En azından yakut için genişletilmiş tablo eklemem gerekiyordu, burada 'çok fazla php' ile cevaba bakınız
Michael Durrant

87

Peter'ın cevabı yeterince açıktır, ancak ne yazık ki seçenekler doğru değil. Bunun yerine aşağıdaki seçenekleri kullanmanız gerekir:

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

Ayrıca dikkat:

  • Vim sekme karakterlerini kullanarak gösterebilirsiniz :set list.
  • Sekme / boşluk seçeneklerini doğru şekilde ayarladıktan sonra, :retab!komutu kullanarak vim'in dosyayı onarmasını sağlayabilirsiniz (boşlukları sekmelerle değiştirin veya tersini yapın) .

2
Yararı nedir expandtabaşırısts=2
James McMahon

12
@JamesMcMahon expandtab tüm sekmeleri boşluklara genişletir. sts (softtabstop), girintiler için boşluklar ve sekmeler ekler: tabstop boyutuna bağlı olarak girintiye sığacak kadar çok sekme ve daha sonra boşluklar. Tabii ki, expandtab açıksa, eklenen tüm sekmeler boşluklara dönüştürülür. stackoverflow.com/questions/1562336/… daha fazla yardımcı olabilir. Genişletme sekmesi olmadan, Peter'ın cevabı boşluk değil, 2 karakter genişliğinde sekmeler eklerdi.
ajmccluskey

35

Peter'ın cevabına +1, ama Vim de başka bir çözüm sunuyor. Tek seferde daha karmaşık bir şey yapmak istiyorsanız setlocal, bir kerede bir sürü seçenek, komut ve eşleme ayarlamak gibi, vim'in filetype eklenti özelliği kurtarmaya gelir.

Sahip olmanız filetype plugin onveya filetype plugin indent oniçinde olmanız gerekir .vimrcve daha sonra örneğin yakut için bir eklenti oluşturabilirsiniz ~/.vim/ftplugin/ruby.vim. Teknik olarak burada olduğu gibi tüm komutları kullanabilirsiniz, Ruby dosyası yüklendiğinde çalıştırmak, ancak önerilir olanlar dahil edilecek setlocal, map <buffer>, command -buffer, ve tanımlanması fonksiyonları. Kullanım Kılavuzunda daha fazla bilgi bulunmaktadır; Eğer kodlama vimine oldukça aşina iseniz :help 41.11, o zaman atlayın , aksi takdirde okuyun :help usr_40ve :help usr_41.


10

Ayrıca güzel bir vim betiği var: Açtığınız bir dosyanın girintisini algılamaya çalışan DetectIndent . Farklı kodlama stiline sahip birçok dosyayla çalışıyorsanız çok kullanışlıdır.

Benim .vimrc bir autocommand kullanın :

:autocmd BufReadPost * :DetectIndent 

0

Sekme tuşuna her basıldığında boşluk karakterleri eklemek için 'expandtab' seçeneğini ayarlayın:

:set expandtab

Sonraki adım, sekme tuşuna basıldığında eklenecek boşluk karakteri sayısını kontrol etmek, 'tabstop' seçeneğini ayarlamaktır. Örneğin, bir sekme için 2 boşluk eklemek için şunu kullanın:

:set tabstop=2

ref: http://vim.wikia.com/wiki/Converting_tabs_to_spaces

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.