Дві команди, визначені нижче, переміщують усі буфери з правої вкладки на поточну вкладку, а потім закривають вкладку правої руки. Mtabspпереміщує їх, розбиваючи по горизонталі і Mtabvspрозбиваючись вертикально. Потрібно перенести об'єднану вкладку перед використанням команд. Використовувати +tabm, -tabmабо <n>tabm.
Налаштування
Додайте нижче свій сценарій vim 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)
Технічні деталі
Функція Mtab отримує один параметр vert. Він визначає, чи розділена поточна вкладка по горизонталі чи вертикалі.
Бажаний результат досягається наступними кроками:
- Переходимо до наступної вкладки тимчасово
- Використовуйте дві змінні для позначення номера вкладки та буферів
- Поверніться до поточної вкладки
- Розбиваємо вкладку і відкриваємо кожен буфер
- Нарешті закриваємо вкладку правої руки
Якщо наша поточна вкладка остання, команди ігноруються.