在新(GUI)窗口中打开vim选项卡?

时间:2011-05-25 11:03:26

标签: vim macvim

我想将当前标签移动到MacVim中的新(可视/实际)窗口。

这可能很难,因为:

  • vim帮助中没有任何内容,只有极少数 - 没有帮助 - 点击谷歌
  • MacVim不支持它(link,2009)

所以我想知道是否有人找到了实现这个目标的方法?

2 个答案:

答案 0 :(得分:4)

我认为你最接近的是使用mksession

这个有几个缺点(比如,最初辅助会话将打开比最终需要的更多缓冲区)。 但是,它保留您的映射,设置,历史记录,窗口布局(如果当前选项卡中有多个窗口,它们都将被克隆)。

如果这个想法引起你的兴趣,你可以考虑创建一个脚本来过滤会话文件中的部分(这是Yust Another Vim Text Script)

:mksession! $HOME/detach.vim
:tabclose
:silent! !gvim remote --servername Detach -nR +'silent! source H:\detach.vim' +tabonly
  1. 保存所有当前窗口,映射,设置(:he mksession
  2. 关闭我们即将分离的标签
  3. 将会话(detach.vim)克隆到远程vim中
    • :silent!尽量不要说太多话
    • !gvim remote --servername Detach; 启动新的远程Vim服务器(如果尚不存在),或者与名为Detach 的现有服务器通信
    • -nR TODO修复 这是为了避免使用swapfiles(因为我发现无法抑制可怕的ATTENTION消息[1])。但是,根据您的具体情况,这可能是不安全的建议,这就是为什么我还将-R包含在只读模式中
    • +'silent! source H:\detach.vim' +tabonly - 在远程vim中,使用要克隆的会话,并仅保留活动选项卡(已在步骤1中关闭。)
  4. 边缘有点粗糙,当然,但我觉得非常接近你的意图。 如果您感觉舒服,可以删除-nR标志,然后单击几个烦人的交换文件注意消息(键盘: Q )。

    [1] :he ATTENTION


    后脚本:

    • 在Windows上你可能想要使用:silent! !start /b gvim ....,以防你有终端窗口
    • 同样在Windows上,如果生成的gvim窗口太小,您可能会遇到恼人的行为。 :simalt ~x序列是最大化窗口的一种hacky方式(假设是英文UI,因为x是Ma x imize的加速器)
    • 作为锦上添花,vim 7.3有'持久撤消'。参见例如:se undofile

答案 1 :(得分:2)

我不认为这是可能的,因为当你打开(g)vim的新实例时,你无法访问前一个vim实例的撤消历史记录。您所能做的就是(在命令模式下):

:!gvim %

它将在gvim的新实例中打开当前文件。至少这是我能想到的。我可能错了