Come applicare un'impostazione in tutte le schede e finestre aperte?


17

Esiste un'opzione per applicare un'impostazione in tutte le schede e finestre, ad esempio applicare :set numbera tutte le schede aperte?

Risposte:


17

Si C'è! Puoi farlo con :tabdoe :windo. Per il tuo caso in particolare:

:tabdo windo set number

Vedi :help :tabdoe :help :windoper maggiori informazioni.


4
:tabdonon è sufficiente. :help :tabdodice che funziona nella finestra corrente di ogni scheda. Per eseguire un comando in tutte le finestre in tutte le schede di cui hai bisogno :tabdo windo set number.
garyjohn,

Punto valido! Aggiornerò.
Bicchiere41

7

:tabdo windo set numberottiene il lavoro fatto, ma non mi piace molto dal momento che passa a ciascuna scheda e finestra prima di eseguire il comando. Al termine dell'esecuzione, finirai sull'ultima finestra dell'ultima scheda.

Penso che questo sia un modo più pulito per impostare le opzioni in tutte le finestre senza modificare la scheda e la finestra correnti:

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

In esecuzione :SetAll number 1abiliterà la colonna numerica in tutte le finestre, ad eccezione di quelle buftypeimpostate, ad esempio le finestre della guida.

Questa è la stessa cosa che lanciare: :tabdo windo let &number = 1. Quindi, il secondo argomento deve essere un'espressione assegnabile. Invece :set filetype=ini, lo sarebbe :SetAll filetype "ini".


1
Aggiungerò anche (oltre a modificare la scheda / finestra corrente) che :tabdo windopotrebbe attivare i comandi automatici e rallentare le impostazioni delle opzioni. Sebbene la soluzione di Tommy A non possa essere utilizzata immediatamente, è quella da preferire nei plugin.
Luc Hermitte,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.