Vim, sekme Vs söz konusu olduğunda çok yardımcı oluyor. alan tercihleri. Anladığım kadarıyla, tabstop
ayar bir sekme karakterinin genişliğini gösteriyor. shiftwidth
Ayar belirtir kaç sütun için arttırma / azaltma kullanıldığında <<ve >>komutları ise softtabstop
tuşuna zaman boşluk miktarı sokulacak ayar etkiler Tabekleme modunda anahtar. Eğer expandtab
, sekme tuşu ekler üzerinde softtabstop
boşluk karakter sayısı. Kapalıyken expandtab
, tuşuna basıldığında, Tabeşleşen mümkün olan en az sayıda sekme + boşluk karakteri eklenir softtabstop
. (Yanılıyorsam lütfen beni düzeltin.)
Bu son nokta beni meraklandırıyor: istemeyeceğiniz pratik bir durum var shiftwidth == tabstop && tabstop == softtabstop
mı? Ben bir tane düşünemiyorum. Bana kalırsa, bunların 3'ünü de tek bir atamada aynı değere ayarlayabilmem en uygunudur. örneğin arıyor:
:set stab=4
koşmaya eşdeğer olan:
:set tabstop=4 softtabstop=4 shiftwidth=4
Bunun nasıl yapılabileceğini kimse önerebilir mi?
GÜNCELLEME
Şimdiye kadar gelen yanıtlar için teşekkürler , çok fazla php , hobbs ve kaiser.se . Her birine ayrı ayrı yanıt vermek yerine, soruyu burada güncelliyorum.
Expandtab kapalıyken Softtabstop
Yukarıda, expandtab kapalıyken, Sekme tuşuna basıldığında, eşleşen mümkün olan en az sayıda sekme + boşluk karakteri eklendiğini söylemiştim softtabstop
. Bunun yanındayım, ama ne demek istediğimi açıklamam gerektiğini düşünüyorum. Bunu birkaç örnekle yapmaya çalışacağım. Takip etmek için, :set list
sekme karakterlerini görebilmek için koşun .
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
Ekleme modunda, sekme tuşuna basıldığında 2 boşluk karakteri eklenir. Sekme tuşuna ikinci kez basın ve iki boşluk karakteri daha eklemek yerine (toplam 4 boşluk karakteri için) önceki 2 boşluğu tek bir sekme karakteriyle değiştirir. Tabstop 4'e ayarlanmıştır, bu nedenle tek bir sekme karakteri 4 boşlukla aynı genişliğe sahiptir.
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
Ekleme modunda, sekme tuşuna basıldığında 1 sekme karakteri artı 2 boşluk eklenir. Sekme karakterinin genişliği 4'tür, bu nedenle toplam genişlik 6'dır ve bu 3 karakter kullanılarak elde edilir. Sekme tuşuna ikinci kez basmak, iki sekme karakteri ekler ve daha önce eklenen iki boşluğu kaldırır. Toplam genişlik 12'dir ve bu 3 karakter kullanılarak elde edilir.
Bu örneklerin her ikisinde de Vim, softtabstop ile eşleşen mümkün olan minimum sayıda sekme + boşluk karakteri ekler.
Expandtab kapalıyken çalışıyorsam, softtabstop'u tabstop'tan farklı bir değere ayarlayarak elde edilebilecek ekstra granüler kontrolü istediğimi göremiyorum. Hala beni ayarlamak mümkün olabilmesi için yararlı olacağını tabstop
, softtabstop
ve shiftwidth
tek bir komutla aynı değere.
Expandtab, softtabs'ı gereksiz kılar mı?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
Ekleme modunda, sekme tuşuna basıldığında 4 boşluk eklenir. Silme tuşuna basmak tek bir alanı siler - bu nedenle yanlışlıkla sekme tuşuna basarsanız 4 kez geri gitmeniz gerekir.
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
Ekleme modunda, sekme tuşuna basıldığında 4 boşluk eklenir. Geri silme tuşuna basıldığında 4 boşluk silinir.
Açık olarak çalışıyorsam expandtab
, silme tuşunun sekme tuşu ekleriyle aynı miktarda beyaz boşluğu kaldırmasını tercih ederim. Yani bu durumda da, ben aynı değer atamak edebilmek için yararlı olacağını hissediyorum tabstop
, softtabstop
ve shiftwidth
aynı anda.
Bir kısayol yine de faydalı olabilir
Vim'in bu kadar çok esneklik sağlaması harika ama buna ihtiyaç duyduğumu göremiyorum. Sadece bir sekmenin genişliğini ve 'sert' sekme mi (sekme karakteri kullanarak) yoksa 'yumuşak' sekme mi (boşluklardan oluşan) seçebilmek istiyorum. Sert ve yumuşak sekmeler arasında geçiş yapmak yeterince kolaydır ( :set expandtab!
), ancak 3 farklı parametreyle uğraşmak zorunda kalmadan sekmenin genişliğini ayarlamanın daha kolay olmasını diliyorum.
Bu yüzden böyle bir şey için önerdiğim önerim :set stab=4
bana hala iyi geliyor.