“Set” komutu sadece aktif arabelleği etkiler mi?


16

Vim'de iki arabellek var:

:ls
  1 %a   ".vimrc"                       line 1
  2 #h   "script.sh"                    line 1
Press ENTER or type command to continue

Yukarıda görüldüğü gibi, ben ilk tampondayım. Şimdi :set softtabstop=16komutu çalıştırırsam, her iki tamponu da etkilemesini beklerim. Bununla birlikte, durum böyle değildir - stsilk arabellek değeri gerçekten değiştirilir ve Tabanahtar dört sekme karakteri ekler ( ts=4), daha sonra ikinci arabellek için stsdeğer hala olur 4:

:ls
  1 #h + ".vimrc"                       line 1
  2 %a + "script.sh"                    line 1
  softtabstop=4
Press ENTER or type command to continue

Neden böyle? Bunun settüm tamponları setlocaletkilediğini ve sadece aktif tamponu etkilediğini düşündüm .

Yanıtlar:


26

Seçenekler genel , pencere yerel veya tampon yerel olabilir .

Ne zaman size :setbir küresel seçenek, yeni değerdir küresel .

Ne zaman size :setlocalbir küresel seçenek, yeni değerdir yerel .

Ne zaman size :setbir yerel seçenek, yeni değerdir yerel .

softtabstopBir varlık tampon-yerel seçenek, değerini değiştirmek sadece geçerli tampon etkiler.

Bir seçeneğin "kapsamı" şu şekilde belirtilir :help option:

'softtabstop' 'sts'    number    (default 0)
                       local to buffer
                       {not in Vi}
Number of spaces that a <Tab> counts[...]

:help local-options, :help :setlocalve :help global-localtüm ayrıntıları daha ayrıntılı olarak açıklayın.


3
Bir de var :setglobal.
Sato Katsura

3
Ayrıca, nasıl ayarladığınıza bakılmaksızın bazı seçenekler globaldir. Örn 'encoding'.
Antony

Buffer id ile yerel fonksiyonu ve bazı vimscriptfonksiyon çağrısıyla seçenek değerini ayarlamanın bir yolu var mı ?
St.Antario

Bunu setbufvarbaşarmak için kullanılabilecek bir işlev vardır. İlk başta bulamadı.
St.Antario

2

Bir uzman değil, @Martin, ancak okumadan bu tamponun yeni bir küresel değer almasını sağlamak için her bir tampondaki :help setyerel değeri "ayarlamanız" gerekir sts. setlocal sts= (veya boole bayrakları için setlocal flag<). Kinda, geçerli global değerlere açık olarak başlatılan yerel ayarlar açık, daha sonra aksi belirtilmedikçe yerel değerleri koru. Oyunda yerel bir ayar yoksa, yeni global değerler almalıdır .

Yine, bir uzman olmamakla birlikte, ikinci tamponun daha sonra açık bir yerel ayara sahip olduğunu tahmin ediyorum set. Daha 50/50 den hala arasındaki fark ne anlamış değilim benim anlayış, yanlış olduğunu setve setglobalbir .

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.