Hai lệnh được xác định bên dưới sẽ di chuyển tất cả các bộ đệm từ tab bên phải sang tab hiện tại và sau đó đóng tab bên phải. Mtabsp
di chuyển chúng bằng cách chia theo chiều ngang và Mtabvsp
chia theo chiều dọc. Bạn cần di chuyển tab đã hợp nhất trước khi sử dụng các lệnh. Sử dụng +tabm
, -tabm
hoặc<n>tabm
.
Thiết lập
Thêm tập lệnh vim dưới đây vào vimrc
:
function! Mtab(vert)
if tabpagenr() == tabpagenr("$")
return 0
endif
+tabnext
let s:killed_tab = tabpagenr()
let s:buf_list = tabpagebuflist()
-tabnext
for item in s:buf_list
if a:vert
vsp
else
sp
endif
execute "buf " . item
endfor
execute "tabclose " . s:killed_tab
endfunction
command! Mtabsp call Mtab(0)
command! Mtabvsp call Mtab(1)
Chi tiết kỹ thuật
Hàm Mtab nhận một tham số vert
. Nó xác định nếu tab hiện tại được chia theo chiều ngang hoặc chiều dọc.
Kết quả mong muốn đạt được với các bước sau:
- Chúng tôi tạm thời chuyển sang tab tiếp theo
- Sử dụng hai biến để tham chiếu số tab và bộ đệm của nó
- Quay trở lại tab hiện tại
- Chúng tôi chia tab và mở từng bộ đệm
- Cuối cùng, chúng tôi đóng tab bên tay phải
Nếu tab hiện tại của chúng tôi là cuối cùng, các lệnh sẽ bị bỏ qua.