Wie wende ich eine Einstellung in allen geöffneten Registerkarten und Fenstern an?


17

Gibt es eine Option, um eine Einstellung in allen Registerkarten und Fenstern anzuwenden, z. B. für :set numberalle geöffneten Registerkarten?

Antworten:


17

Ja da ist! Sie können dies mit :tabdound erreichen :windo. Für Ihren Fall speziell:

:tabdo windo set number

Siehe :help :tabdound :help :windofür weitere Informationen.


4
:tabdoist nicht ausreichend. :help :tabdosagt, dass es im aktuellen Fenster jeder Registerkarte funktioniert. Um einen Befehl in allen Fenstern in allen Registerkarten auszuführen, benötigen Sie :tabdo windo set number.
Garyjohn

Gutes Argument! Ich werde aktualisieren.
Tumbler41

7

:tabdo windo set numbererledigt den Job, aber ich mag es nicht wirklich, da es tatsächlich zu jeder Registerkarte und jedem Fenster wechselt, bevor der Befehl ausgeführt wird. Nach Abschluss der Ausführung gelangen Sie zum letzten Fenster der letzten Registerkarte.

Ich denke, dies ist eine sauberere Möglichkeit, Optionen in allen Fenstern festzulegen, ohne die aktuelle Registerkarte und das aktuelle Fenster zu ändern:

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

Beim Ausführen :SetAll number 1wird die Nummernspalte in allen Fenstern aktiviert, mit Ausnahme derjenigen, die buftypefestgelegt wurden, z. B. Hilfefenster.

Dies ist das gleiche wie ausgeführt wird : :tabdo windo let &number = 1. Das zweite Argument muss also ein zuweisbarer Ausdruck sein. Stattdessen :set filetype=iniwäre es :SetAll filetype "ini".


1
Ich werde (neben dem Ändern des aktuellen Tabs / Fensters) auch hinzufügen, dass :tabdo windomöglicherweise Autobefehle ausgelöst werden, und die Optionseinstellungen verlangsamen. Die Lösung von Tommy A kann zwar nicht sofort verwendet werden, wird jedoch in Plugins bevorzugt.
Luc Hermitte
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.