Dua perintah yang didefinisikan di bawah ini memindahkan semua buffer dari tab tangan kanan ke tab saat ini dan kemudian tutup tab tangan kanan. Mtabsp
memindahkannya dengan membelah secara horizontal dan Mtabvsp
membelah secara vertikal. Anda perlu memindahkan tab gabungan sebelum menggunakan perintah. Gunakan +tabm
, -tabm
atau <n>tabm
.
Mempersiapkan
Tambahkan skrip vim di bawah ini ke 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)
Rincian teknis
Fungsi Mtab menerima satu parameter vert
. Ini menentukan apakah tab saat ini dipisah secara horizontal atau vertikal.
Hasil yang diinginkan dicapai dengan langkah-langkah berikut:
- Kami pindah ke tab berikutnya untuk sementara
- Gunakan dua variabel untuk merujuk nomor tab dan buffernya
- Kembali ke tab saat ini
- Kami membagi tab dan membuka setiap buffer
- Akhirnya, kami menutup tab kanan
Jika tab kita saat ini adalah yang terakhir, perintahnya diabaikan.