Làm cách nào để áp dụng cài đặt trong tất cả các tab và cửa sổ đang mở?


17

Có tùy chọn nào để áp dụng cài đặt trong tất cả các tab và cửa sổ không, ví dụ: áp dụng :set numbercho tất cả các tab đang mở?

Câu trả lời:


17

Có, có! Bạn có thể thực hiện điều này với :tabdo:windo. Đối với trường hợp của bạn cụ thể:

:tabdo windo set number

Xem :help :tabdo:help :windođể biết thêm thông tin.


4
:tabdonó không thích đáng. :help :tabdonó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.
garyjohn

Điểm công bằng! Tôi sẽ cập nhật.
Tumbler41

7

:tabdo windo set numberhoà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 1sẽ 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".


1
Tôi cũng sẽ thêm (bên cạnh việc thay đổi tab / cửa sổ hiện tại) :tabdo windocó 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.
Luc Hermitte
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.