Câu trả lời:
Có, có! Bạn có thể thực hiện điều này với :tabdo
và :windo
. Đối với trường hợp của bạn cụ thể:
:tabdo windo set number
Xem :help :tabdo
và :help :windo
để biết thêm thông tin.
:tabdo windo set number
hoàn thành công việc, nhưng tôi không thực sự thích nó vì nó thực sự chuyển sang từng tab và cửa sổ trước khi chạy lệnh. Sau khi chạy xong, bạn sẽ kết thúc ở cửa sổ cuối cùng của tab cuối cùng.
Tôi nghĩ rằng đây là một cách sạch hơn để đặt tùy chọn trong tất cả các cửa sổ mà không thay đổi tab và cửa sổ hiện tại:
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>)
Chạy :SetAll number 1
sẽ kích hoạt cột số trong tất cả các cửa sổ, ngoại trừ các cửa sổ đã buftype
đặt, chẳng hạn như cửa sổ trợ giúp.
Điều này giống như chạy : :tabdo windo let &number = 1
. Vì vậy, đối số thứ hai cần phải là một biểu thức có thể gán. Thay vì :set filetype=ini
, nó sẽ được :SetAll filetype "ini"
.
:tabdo windo
có thể kích hoạt autocommands và làm chậm cài đặt tùy chọn. Mặc dù giải pháp của Tommy A không thể được sử dụng ngoài luồng, nhưng đó là giải pháp được ưa thích hơn trong các plugin.
:tabdo
nó không thích đáng.:help :tabdo
nói rằng nó hoạt động trong cửa sổ hiện tại của mỗi trang tab. Để thực thi một lệnh trong tất cả các cửa sổ trong tất cả các tab bạn sẽ cần:tabdo windo set number
.