Comment appliquer un paramètre dans tous les onglets et fenêtres ouverts?

17

Existe-t-il une option pour appliquer un paramètre dans tous les onglets et fenêtres, par exemple appliquer :set numberà tous les onglets ouverts?

vfclists
la source

Réponses:

17

Oui il y a! Vous pouvez accomplir cela avec :tabdoet :windo. Pour votre cas en particulier:

:tabdo windo set number

Voir :help :tabdoet :help :windopour plus d'informations.

Tumbler41
la source
4
:tabdoc'est insuffisant. :help :tabdodit qu'il fonctionne dans la fenêtre actuelle de chaque page à onglet. Pour exécuter une commande dans toutes les fenêtres de tous les onglets dont vous aurez besoin :tabdo windo set number.
garyjohn
Bon point! Je vais mettre à jour.
Tumbler41
7

:tabdo windo set numberfait le travail, mais je ne l'aime pas vraiment car il passe en fait à chaque onglet et fenêtre avant d'exécuter la commande. Une fois l'exécution terminée, vous vous retrouverez dans la dernière fenêtre du dernier onglet.

Je pense que c'est une façon plus propre de définir les options dans toutes les fenêtres sans changer l'onglet et la fenêtre actuels:

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

L'exécution :SetAll number 1active la colonne numérique dans toutes les fenêtres, à l'exception de celles qui ont été buftypedéfinies, telles que les fenêtres d'aide.

Ceci est le même que celui en cours d' exécution: :tabdo windo let &number = 1. Ainsi, le deuxième argument doit être une expression attribuable. Au lieu de cela :set filetype=ini, ce serait :SetAll filetype "ini".

Tommy A
la source
1
J'ajouterai également (en plus de changer l'onglet / la fenêtre actuelle) qui :tabdo windopeut déclencher des autocommandes et ralentir les paramètres des options. Bien que la solution de Tommy A ne puisse pas être utilisée prête à l'emploi, c'est celle à privilégier dans les plugins.
Luc Hermitte du