Ответы:
Да, есть! Вы можете сделать это с помощью :tabdo
и :windo
. Для вашего случая специально:
:tabdo windo set number
Смотрите :help :tabdo
и :help :windo
для получения дополнительной информации.
: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"
.
:tabdo windo
может вызвать автокоманды, и замедлить настройки параметров. Хотя решение Tommy A нельзя использовать «из коробки», его лучше использовать в плагинах.
:tabdo
недостаточно:help :tabdo
говорит, что работает в текущем окне каждой вкладки. Чтобы выполнить команду во всех окнах во всех вкладках, вам нужно:tabdo windo set number
.