是否有一种简单的方法可以将Vim中的相邻选项卡作为拆分移动到当前窗口?
在环顾四周时,我找到了一个邮件列表讨论,有人说这是操作的反面 Ctrl + W , T 而没有提供溶液
答案 0 :(得分:37)
您的问题的问题是标签没有绑定到特定的缓冲区。你可以在一个标签中有10个带有尽可能多缓冲区的窗口,这样就可以将标签移动到一个分区中。没有多大意义。
更有意义的是"将缓冲区x显示为分裂"可以用
完成:sb <name_of_buffer>
答案 1 :(得分:8)
我提供两种解决方案,第一种我自己检查,我可以保证它正常工作。第二,我很快就会尝试
第一个解决方案:只需创建文件夹~/.vim/plugin
并将文件Tabmerge.vim
下载到文件夹中即可安装此插件http://www.vim.org/scripts/script.php?script_id=1961。然后,当您有两个选项卡并键入
:Tabmerge
您将两个标签合并为一个,水平分割并top
对齐。查看链接以查找完整的使用指南。
或者,请查看此页面http://vim.wikia.com/wiki/Move_current_window_between_tabs以获取两个函数的代码,以便在选项卡之间移动当前窗口。这里的功能(我还没试过):
function MoveToPrevTab()
"there is only one window
if tabpagenr('$') == 1 && winnr('$') == 1
return
endif
"preparing new window
let l:tab_nr = tabpagenr('$')
let l:cur_buf = bufnr('%')
if tabpagenr() != 1
close!
if l:tab_nr == tabpagenr('$')
tabprev
endif
sp
else
close!
exe "0tabnew"
endif
"opening current buffer in new window
exe "b".l:cur_buf
endfunc
和
function MoveToNextTab()
"there is only one window
if tabpagenr('$') == 1 && winnr('$') == 1
return
endif
"preparing new window
let l:tab_nr = tabpagenr('$')
let l:cur_buf = bufnr('%')
if tabpagenr() < tab_nr
close!
if l:tab_nr == tabpagenr('$')
tabnext
endif
sp
else
close!
tabnew
endif
"opening current buffer in new window
exe "b".l:cur_buf
endfunc