開いているすべてのタブとウィンドウに設定を適用する方法は?


17

すべてのタブとウィンドウに設定を適用するオプションはあり:set numberますか?例えば、開いているすべてのタブに適用しますか?

回答:


17

はいあります!:tabdoとでこれを達成でき:windoます。特にあなたの場合:

:tabdo windo set number

:help :tabdoおよび:help :windoを参照してください。


4
:tabdo十分ではありません。:help :tabdo各タブページの現在のウィンドウで動作するという。必要なすべてのタブのすべてのウィンドウでコマンドを実行するには:tabdo windo set number
ゲイリージョン

フェアポイント!更新します。
タンブラー41

7

:tabdo windo set numberは仕事をやり遂げますが、実際にはコマンドを実行する前に各タブとウィンドウに切り替わるため、私はそれが本当に好きではありません。実行が終了すると、最後のタブの最後のウィンドウに移動します。

これは、現在のタブとウィンドウを変更せずに、すべてのウィンドウでオプションを設定するよりクリーンな方法だと思います:

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

実行:SetAll number 1するとbuftype、ヘルプウィンドウなどの設定済みのウィンドウを除き、すべてのウィンドウで数値列が有効になります。

これは、実行と同じです:tabdo windo let &number = 1。したがって、2番目の引数は割り当て可能な式である必要があります。代わりに:set filetype=ini、それは次のようになります:SetAll filetype "ini"


1
また、:tabdo windoオートコマンドをトリガーし、オプション設定を遅くする可能性のある(現在のタブ/ウィンドウを変更する以外に)追加します。Tommy Aのソリューションはそのまま使用することはできませんが、プラグインで優先されるソリューションです。
リュックエルミット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.