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