¿Cómo aplicar una configuración en todas las pestañas y ventanas abiertas?

17

¿Existe una opción para aplicar una configuración en todas las pestañas y ventanas, por ejemplo, aplicar :set numbera todas las pestañas abiertas?

vfclists
fuente

Respuestas:

17

¡Sí hay! Puede lograr esto con :tabdoy :windo. Para su caso específicamente:

:tabdo windo set number

Ver :help :tabdoy :help :windopara más información.

Vaso41
fuente
44
:tabdoNo es suficiente. :help :tabdodice que funciona en la ventana actual de cada página de pestaña. Para ejecutar un comando en todas las ventanas en todas las pestañas que necesitará :tabdo windo set number.
garyjohn
¡Punto justo! Voy a actualizar
Tumbler41
7

:tabdo windo set numberhace el trabajo, pero realmente no me gusta ya que en realidad cambia a cada pestaña y ventana antes de ejecutar el comando. Cuando termine de ejecutarse, terminarás en la última ventana de la última pestaña.

Creo que esta es una forma más limpia de establecer opciones en todas las ventanas sin cambiar la pestaña y la ventana actuales:

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>)

La ejecución :SetAll number 1habilitará la columna de números en todas las ventanas, excepto las que se han buftypeconfigurado, como las ventanas de ayuda.

Esto es lo mismo que ejecutar: :tabdo windo let &number = 1. Entonces, el segundo argumento debe ser una expresión asignable. En lugar de :set filetype=ini, lo sería :SetAll filetype "ini".

Tommy A
fuente
1
También agregaré (además de cambiar la pestaña / ventana actual) que :tabdo windopuede activar los comandos automáticos y ralentizar la configuración de las opciones. Si bien la solución de Tommy A no se puede usar de fábrica, es la que se prefiere en los complementos.
Luc Hermitte