Answers:
: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
。