Tüm açık sekmelerde ve pencerelerde bir ayar nasıl uygulanır?


17

Tüm sekmelerde ve pencerelerde bir ayar uygulama seçeneği var mı, örneğin :set numbertüm açık sekmelere uygula ?

Yanıtlar:


17

Evet var! Bunu :tabdove ile yapabilirsiniz :windo. Sizin durumunuz için özellikle:

:tabdo windo set number

Daha fazla bilgi için :help :tabdove bölümüne bakın :help :windo.


4
:tabdoyeterli değil. :help :tabdoher sekme sayfasının geçerli penceresinde çalıştığını söylüyor. Tüm sekmelerdeki tüm pencerelerde komut çalıştırmak için ihtiyacınız olacaktır :tabdo windo set number.
garyjohn

Doğru tespit! Güncelleyeceğim.
Tumbler41

7

:tabdo windo set numberişi bitirir, ancak komutu çalıştırmadan önce her sekmeye ve pencereye geçtiği için gerçekten sevmiyorum. Çalışmayı bitirdikten sonra, son sekmenin son penceresine çıkacaksınız.

Bu geçerli sekmeyi ve pencereyi değiştirmeden tüm pencerelerde seçenekleri ayarlamak için daha temiz bir yol olduğunu düşünüyorum:

function! s:set_all(option, val, ...) abort
  let val = eval(a:val)

  for t in range(1, tabpagenr('$'))
    for w in range(1, tabpagewinnr(t, '$'))
      if gettabwinvar(t, w, '&buftype') !=# ''
        continue
      endif
      call settabwinvar(t, w, '&'.a:option, val)
    endfor
  endfor
endfunction

command! -complete=option -nargs=+ SetAll call s:set_all(<f-args>)

Çalıştırıldığında :SetAll number 1, sayı pencereleri, buftypeyardım pencereleri gibi ayarlanmış olanlar dışında tüm pencerelerde etkinleştirilir .

Bu çalışan aynıdır: :tabdo windo let &number = 1. Dolayısıyla, ikinci argümanın atanabilir bir ifade olması gerekir. Bunun yerine :set filetype=ini, olurdu :SetAll filetype "ini".


1
Ayrıca :tabdo windo, otomatik komutları tetikleyebilecek ve seçenek ayarlarını yavaşlatabilecek (geçerli sekmeyi / pencereyi değiştirmenin yanında) ekleyeceğim . Tommy A'nın çözümü kullanıma hazır olmasa da, eklentilerde tercih edilen çözümdür.
Luc Hermitte
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.