Respostas:
Sim existe! Você pode conseguir isso com :tabdo
e :windo
. Para o seu caso especificamente:
:tabdo windo set number
Veja :help :tabdo
e :help :windo
para mais informações.
:tabdo windo set number
faz o trabalho, mas eu realmente não gosto, pois ele alterna para cada guia e janela antes de executar o comando. Depois de terminar a execução, você terminará na última janela da última guia.
Eu acho que essa é uma maneira mais limpa de definir opções em todas as janelas sem alterar a guia e a janela atuais:
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>)
A execução :SetAll number 1
ativará a coluna numérica em todas as janelas, exceto as que foram buftype
definidas, como as janelas de ajuda.
Este é o mesmo que correr: :tabdo windo let &number = 1
. Portanto, o segundo argumento precisa ser uma expressão atribuível. Em vez de :set filetype=ini
, seria :SetAll filetype "ini"
.
:tabdo windo
pode acionar comandos automáticos e diminuir as configurações das opções. Embora a solução de Tommy A não possa ser usada imediatamente, é a preferida em plugins.
:tabdo
não é suficiente.:help :tabdo
diz que opera na janela atual de cada ficha de registro. Para executar um comando em todas as janelas e em todas as guias, você precisará:tabdo windo set number
.