Як застосувати налаштування у всіх відкритих вкладках та вікнах?


17

Чи є можливість застосувати налаштування на всіх вкладках і вікнах, наприклад застосувати :set numberдо всіх відкритих вкладок?

Відповіді:


17

Так, є! Ви можете досягти цього за допомогою :tabdoта :windo. Для вашого конкретного випадку:

:tabdo windo set number

Див. :help :tabdoТа :help :windoдля отримання додаткової інформації.


4
:tabdoнедостатньо. :help :tabdoговорить, що він працює в поточному вікні кожної сторінки вкладки. Для виконання команди у всіх вікнах на всіх вкладках вам знадобиться :tabdo windo set number.
garyjohn

Справедлива точка! Я оновлю.
Tumbler41

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. Отже, другий аргумент повинен бути виразом, що присвоюється. Замість :set filetype=iniцього було б :SetAll filetype "ini".


1
Я також додаю (окрім зміни поточної вкладки / вікна), що :tabdo windoможе викликати автокоманди, і уповільнить налаштування параметрів. Хоча рішення Tommy A не можна використовувати поза коробкою, саме його слід віддати перевагу в плагінах.
Люк Ермітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.