Дві команди, визначені нижче, переміщують усі буфери з правої вкладки на поточну вкладку, а потім закривають вкладку правої руки. 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
. Він визначає, чи розділена поточна вкладка по горизонталі чи вертикалі.
Бажаний результат досягається наступними кроками:
- Переходимо до наступної вкладки тимчасово
- Використовуйте дві змінні для позначення номера вкладки та буферів
- Поверніться до поточної вкладки
- Розбиваємо вкладку і відкриваємо кожен буфер
- Нарешті закриваємо вкладку правої руки
Якщо наша поточна вкладка остання, команди ігноруються.