`` Softtabstop '' ne için kullanılır?


21

Vim'deki sekmeyle ilgili bu ayarların farkındayım:

  • ts
  • sw
  • expandtab
  • smarttab
  • sts

Normal ayarım set ts=4 sw=4 expandtab smarttab.

Ancak stsbelgelere göre , expandtabayarlanmamışsa, bir sekme boyutu için istenen sayıda boşluk oluşturmak için boşluk ve sekmelerin bir kombinasyonunu kullanmaya çalışacaktır.

Bu ayar için gerçekten yararlı bir senaryo düşünemiyorum: Neden birisi sadece işleri bozabilecek sabit sayıda sekme ve boşluğa sahip olmak ister ki? Bunu düşünebilmemin tek avantajı karakter sayısını azaltmak ve böylece bana garip gelen dosya boyutunu azaltmak.

Yanıtlar:


20

Gibi softtabstopDocumention bahseder, sen 8 varsayılan sekme durağı boyutunu tutmak istiyorsanız bu kullanışlı bir yöntem olmakla düzenlemek sekme durağı boyutu sanki bir dosya başka bir değer oldu. Kod düzenleme sırasında Örneğin, eğer 4 bir girinti düzeyi istedi ama bazı yorumlar böyle bir 8 sekme durağı bağlıydı masa, sen ayarlayabilirsiniz olarak sekme girintili metin vardı stsiçin 4.

Sekme ayarlarınız ( set ts=4 sw=4 expandtab smarttab) ile sts(örneğin set ts=8 sts=4) kullanımı arasında fark ettiğim bir fark , bir metin satırının ortasındaki boşluklar üzerinde geri boşluk bırakılmasıdır. Örneğin, ·bir boşluk gösteren aşağıdaki metin satırını düşünün :

some·text·······more·text

İnsert modda, hemen önce imleci marasında more text. Ayarlarınızla Backspace tuşuna basıldığında tek bir alan silinir. Ancak sts=4, Backspace kullanılırken boşlukların bir sekme karakteri olması gibi davranacağı için önceki sekme durağına kadar olan tüm işlemleri siler.

sts=4Sekmelerinizi ve boşluklarınızı karıştırmazken ayarlarınıza ek olarak ayarlayabilir ve orta satır geri alma davranışını elde edebilirsiniz. Sekmeler dört boşluğa genişletilecek, ancak bir satırın ortasındaki çeşitli boşluklar üzerinde geri dönebilirsiniz.


3

Aşağıdaki örneğe bakın,

// Start vim without loading your vimrc. set only tabstop=8 softtabstop=4.
// This makes <Tab> in insert mode equals to 4 <Space> length at max.

// In insert mode, type 12, one <Tab>, 5. We get insertion below,
12··5
// Quit insert mode. Move cursor back, we find 2 <Space> inserted.

// In insert mode, type 12, two <Tab>, 9. We get insertion below,
12······9
// Quit insert mode. Move cursor back, you find a <Tab> inserted.

// In insert mode, type 12, three <Tab>, 3. We get insertion below,
12··········3
// Move the cursor back, you find a <Tab> and 4 <Space> inserted.

// We can even set sotftabstop=12, but this time we only need type one <Tab>, then 3.
12··········3
// Move the cursor back, you find a <Tab> and 4 <Sapce> inserted.

Yani tabstopa'nın ne kadar geniş Tabolduğu tanımlanırken, softtabstopimlecin yazarken ne kadar hareket ettiği ile ilgilidir Tab. Aynı değere ayarlanmadığında, Tabtuşa basarsanız, önemsiz bir Tabkarakter anlamına gelmez . Her durumda, ekleme modundan çıktıktan sonra karar veren vim'dir. Vim önce eklemeyi olabildiğince çok eşleştirmeye çalışacaktır tabstop; Eğer sonunda bir tam yapamazsa tabstop, vim sadece telafi eder Space.

Biraz daha fazla konuşmak için, ayarladıysanız expandtab, vim demek eşittir:

Kaç hesaplamak için zahmet etmeyin Tabve Sapcegereklidir. Basitçe yerleştirin Space.


Cevabınız bir rant gibi görünüyor ve soruyu cevaplıyor gibi görünmüyor.
Herb Wolfe

@Herb Wolfe Keşke cevabım PO'nun olağandışı ayar yapıldığında ne olduğunu anlamasına yardımcı olabilir :set st=7 sts=13. Vim sadece kodlama için değil, orijinal olarak metin düzenleme için tasarlanmıştır.
Chen XI

1

Basit cevap:

Örneğin, özellikle çizelgelemenin çok önemli olduğu Python'da programlama için son derece yararlıdır. Sts = 4 ile geri tuşuna bastığınızda, satır boşluk bırakılır, tek bir boşluk karakteri silinmez.

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.