SORU
13 EKİM 2009, Salı


Tab Vs Alanı Vim tercihleri

Vim sekmesine gelince ev çok Vs. alanı tercihleri. Anladığım kadarıyla tabstop ayar sekme karakteri genişliğini gösterir. shiftwidth ayarı kullanırken arttırma/azaltma için kaç sütun belirtir<<vesofttabstop ayarı boşluk miktarını bastığınızda eklenecek etkiler ise komutlarıTabekleme modu anahtarı. Eğer expandtab eğer tab tuşuna ekler alanı softtabstop sayı karakter. expandtab kapalı ise, tuşuna basarakTabsofttabstop eşleşen bir sekme alanı mümkün olan en küçük sayı tuşuna karakter ekler. (Eğer yanılıyorsam beni düzeltin lütfen.)

Merak ediyorum, bu son nokta: shiftwidth == tabstop && tabstop == softtabstop istemezsin pratik bir durum var mı? Bir düşünemiyorum. Endişe duyuyorum kadarıyla, eğer tek bir atama ile aynı değeri bunların hepsi 3 set, eğer yapabilseydim en uygun olacaktır. örneğin arama:

:set stab=4

çalışan eşdeğer olur:

:set tabstop=4 softtabstop=4 shiftwidth=4

Herkes bu yapılabilir nasıl önerebilirsiniz?

< / ^ hr .

GÜNCELLEME

Şimdiye kadar gelen cevaplar için teşekkürlerçok fazla php,hobbsvekaiser.se. Her biri ayrı ayrı yanıtlamak yerine, burada sorumu yeniliyorum.

Expandtab ile Softtabstop kapalı

Expandtab, Tab tuşuna basarak ekler softtabstop eşleşen sekme alanı olabildiğince az sayıda karakter kapalı yukarıda dedim. - Evet, ama ne demek istediğimi açıklamak istiyorum. Bu yüzden birkaç örnek ile yapmaya çalışacağım. Birlikte takip etmek, çalıştırmak sekme karakterleri görebilmeniz 14**.

tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab

Ekleme modu, sekme tuşu ekler 2 boşluk karakterleri basmak. Tab tuşuna ikinci kez basın ve iki daha fazla boşluk karakterleri (4 boşluk karakterlerini toplam) eklemek yerine tek bir sekme karakteri ile önceki 2 boşlukları değiştirir. Tabstop tek bir sekme karakteri 4 boşlukları aynı genişlikte, yani 4, ayarlanır.

tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab

Ekleme modunda, sekme tuşu ekler 1 sekme karakteri artı 2 boşluk tuşuna basarak. Sekme karakteri toplam genişliği 6, ve bu elde 3 karakter kullanıyor yani 4, genişliği vardır. Sekmesini ikinci kez tuşa basarak iki sekme karakteri ekler ve daha önce eklenmiş iki boşlukları kaldırır. Toplam genişliği 12, ve bu elde 3 karakter kullanıyor.

Bu örneklerden her ikisi de, ekler softtabstop uyan tab, boşluk karakteri ve olası en az sayıda Vim.

Eğer expandtab kapalıyken çalışıyorum, tabstop farklı bir değere softtabstop ayarlayarak elde edilebilir ekstra taneli kontrolü kendim göremiyorum. Hala bana tek bir komut ile aynı değere tabstop, softtabstop shiftwidth set edebilmek için yararlı olacaktır.

Expandtab softtabstop yedek yapar mı?

tabstop=4 softtabstop=0 shiftwidth=4 expandtab

Ekleme modunda, sekme tuşu ekler 4 boşluk tuşuna basarak. Silme tuşu varsa yanlışlıkla tab tuşuna basarsan 4 kez geri almak için var ve bu yüzden tek bir alanı siler.

tabstop=4 softtabstop=4 shiftwidth=4 expandtab

Ekleme modunda, sekme tuşu ekler 4 boşluk tuşuna basarak. Backspace tuşu 4 yerleri siler.

Eğer expandtab açık çalışıyorum, sekme tuşu olarak boşluk ekler aynı miktarda kaldırmak için delete tuşuna tercih ederim. Bu durumda da, tabstop, softtabstop shiftwidth aynı anda değer atamak mümkün yararlı olacağını hissediyorum.

Bir kısayol hala yararlı olacaktır

Vim çok esneklik sağlar harika bir şey, ama kendim gerek görmüyorum. Sadece yanında olmak istiyorum seçebilir genişliği bir sekme ya da öyle bir 'sert' tab kullanarak bir sekme karakteri) ya da 'yumuşak' sekmesini (uydurma boşluk). Sert ve yumuşak sekmeler arasında geçiş çok kolay (:set expandtab!), ama daha basit sekme genişliği, 3 farklı parametreleri ile keman zorunda kalmadan ayarlamak isterdim.

:set stab=4 gibi bir şey için önerilen benim önerim yine de bana iyi geliyor.

CEVAP
23 EKİM 2009, Cuma


Oluşturma stab seçeneği Vim kendisi olmaz kolay, ama ben çırpılmış bu komut/fonksiyon olan damla .vimrc (veya bir eklenti dosyası eğer süper-organize). :Stab ve / veya expandtab kullanılıp kullanılmayacağını girinti düzeyi ve istenir. Eğer yeni bir girinti bir seviye vermeden, ENTER'a basın eğer, sadece geçerli ayarları yazdırılır.

" put all this in your .vimrc or a plugin file
command! -nargs=* Stab call Stab()
function! Stab()
  let l:tabstop = 1 * input('set shiftwidth=')

  if l:tabstop > 0
    " do we want expandtab as well?
    let l:expandtab = confirm('set expandtab?', "&Yes\n&No\n&Cancel")
    if l:expandtab == 3
      " abort?
      return
    endif

    let &l:sts = l:tabstop
    let &l:ts = l:tabstop
    let &l:sw = l:tabstop

    if l:expandtab == 1
      setlocal expandtab
    else
      setlocal noexpandtab
    endif
  endif

  " show the selected options
  try
    echohl ModeMsg
    echon 'set tabstop='
    echohl Question
    echon &l:ts
    echohl ModeMsg
    echon ' shiftwidth='
    echohl Question
    echon &l:sw
    echohl ModeMsg
    echon ' sts='
    echohl Question
    echon &l:sts . ' ' . (&l:et ? '  ' : 'no')
    echohl ModeMsg
    echon 'expandtab'
  finally
    echohl None
  endtry
endfunction

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006
  • Justin Case

    Justin Case

    3 EKİM 2011
  • The CGBros

    The CGBros

    20 AĞUSTOS 2011