相反的问题似乎被问了很多:如何将窗口移动到现有窗口中的新选项卡中。我希望我在 gvim 中打开的选项卡可以移到它自己的窗口或另一个现有窗口中。
这可能吗?
谢谢!
如果该选项卡只显示一个窗口,您只需要记下它的缓冲区编号(例如,通过:ls
or :echo bufnr('')
,或将其包含在状态行中),然后通过关闭选项卡:close
(:set hidden
帮助修改缓冲区),然后转到目标选项卡/ 窗口,然后通过:buf N
或重新打开那里的缓冲区:sbuf N
。
如果您需要在一个标签页中支持多个窗口,则必须编写一个自定义命令/映射,首先记住缓冲区,然后对所有缓冲区应用上述步骤。
编辑:以上是针对单个 Vim 实例中的移动。如果要将缓冲区移动到另一个 GVIM 实例,首先必须:bdelete
在当前 Vim 中移动它,以避免交换文件消息。在新实例中启动很容易:
:execute 'bdelete | !start gvim' shellescape(expand('%:p'), 1)
这会将当前文件的(完整绝对)路径传递给新的 GVIM。
要将文件移动到现有的 GVIM(您需要知道它v:servername
),您需要使用远程客户端-服务器通信 ( :help remote.txt
),例如通过发送类似的:drop
命令remote_send()
,如下所示:
:execute 'bdelete | call remote_send("GVIM1", ":drop " . ' . string(fnameescape(expand('%:p'))) . '. "\<CR>")'
以下是如何将当前缓冲区“移动”到第二个 GVim 实例的方法:
:!gvim --remote %
:bw
请注意,Vim必须使用该+clientserver
选项构建。
不,这是不可能的。
您不能将 vim 选项卡移动到窗口中,无论是新的还是现有的。因为 vim 标签页是窗口的集合。您不能将一组窗口移动到一个窗口中。