Две команды, определенные ниже, перемещают все буферы с правой вкладки на текущую вкладку, а затем закрывают правую вкладку. 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. Он определяет, будет ли текущая вкладка разделена по горизонтали или вертикали.
Желаемый результат достигается с помощью следующих шагов:
- Переходим на следующую вкладку временно
- Используйте две переменные для ссылки на номер вкладки и буферы
- Вернуться на текущую вкладку
- Разбиваем вкладку и открываем каждый буфер
- Наконец, мы закрываем правую вкладку
Если наша текущая вкладка является последней, команды игнорируются.