3

相反的问题似乎被问了很多:如何将窗口移动到现有窗口中的新选项卡中。我希望我在 gvim 中打开的选项卡可以移到它自己的窗口或另一个现有窗口中。

这可能吗?

谢谢!

4

3 回答 3

8

相同的 Vim 实例

如果该选项卡只显示一个窗口,您只需要记下它的缓冲区编号(例如,通过:lsor :echo bufnr(''),或将其包含在状态行中),然后通过关闭选项卡:close:set hidden帮助修改缓冲区),然后转到目标选项卡/ 窗口,然后通过:buf N或重新打开那里的缓冲区:sbuf N

如果您需要在一个标签页中支持多个窗口,则必须编写一个自定义命令/映射,首先记住缓冲区,然后对所有缓冲区应用上述步骤。

不同的 Vim 实例

编辑:以上是针对单个 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>")'
于 2013-10-24T06:47:50.500 回答
2

以下是如何将当前缓冲区“移动”到第二个 GVim 实例的方法:

:!gvim --remote %
:bw

请注意,Vim必须使用该+clientserver选项构建。

于 2013-10-24T20:23:30.873 回答
1

不,这是不可能的。

您不能将 vim 选项卡移动到窗口中,无论是新的还是现有的。因为 vim 标签页是窗口的集合。您不能将一组窗口移动到一个窗口中。

于 2013-10-23T23:52:35.290 回答