Odpowiedzi:
Tak jest! Możesz to zrobić za pomocą :tabdo
i :windo
. W konkretnym przypadku:
:tabdo windo set number
Zobacz :help :tabdo
i :help :windo
więcej informacji.
:tabdo windo set number
wykonuje zadanie, ale nie podoba mi się to, ponieważ faktycznie przełącza się na każdą kartę i okno przed uruchomieniem polecenia. Po zakończeniu działania wyświetli się ostatnie okno ostatniej karty.
Myślę, że jest to czystszy sposób ustawiania opcji we wszystkich oknach bez zmiany bieżącej karty i okna:
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>)
Uruchomienie :SetAll number 1
spowoduje włączenie kolumny liczb we wszystkich oknach, z wyjątkiem tych, które zostały buftype
ustawione, takich jak okna pomocy.
To jest taki sam, jak działa: :tabdo windo let &number = 1
. Zatem drugi argument musi być przypisywalnym wyrażeniem. Zamiast :set filetype=ini
tego byłoby :SetAll filetype "ini"
.
:tabdo windo
mogą wyzwalać automatyczne polecenia i spowalniać ustawienia opcji. Chociaż rozwiązania Tommy'ego A nie można używać od razu po wyjęciu z pudełka, preferuje się je we wtyczkach.
:tabdo
nie jest wystarczający.:help :tabdo
mówi, że działa w bieżącym oknie każdej strony karty. Aby wykonać polecenie we wszystkich oknach na wszystkich kartach, będziesz potrzebować:tabdo windo set number
.