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

h24*_*9jl 7 vim macvim

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

这可能很难,因为:

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

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

seh*_*ehe 4

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

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

如果这个想法让您感兴趣,您可以考虑创建一个脚本来过滤会话文件中的某些部分(这是另一个 Vim 文本脚本)

:mksession! $HOME/detach.vim
:tabclose
:silent! !gvim remote --servername Detach -nR +'silent! source H:\detach.vim' +tabonly
Run Code Online (Sandbox Code Playgroud)
  1. 保存所有当前窗口、映射、设置 ( :he mksession)
  2. 关闭我们要分离的选项卡
  3. 将会话 (detach.vim) 克隆到远程 vim
    • :silent!尽量不要说太多
    • !gvim remote --servername Detach; 启动一个新的远程 Vim 服务器(如果尚不存在),或者与名为的现有服务器对话Detach
    • -nR TODO 修复 这是为了避免使用交换文件(因为我发现没有办法抑制可怕的ATTENTION消息[1])。但是,根据您的情况,这可能是不安全的建议,这就是为什么我还包括-R只读模式
    • +'silent! source H:\detach.vim' +tabonly-- 在远程 vim 中,获取要克隆的会话,并仅保留活动选项卡(已在步骤 1 中关闭)。

当然,边缘有点粗糙,但我觉得非常接近你的意图。如果您觉得舒服,您可以放下-nR标志,然后单击一些烦人的交换文件注意消息(键盘:)Q

[1]:he ATTENTION


后期脚本:

  • :silent! !start /b gvim ....在 Windows 上,如果您有终端窗口,您可能需要使用
  • 同样在 Windows 上,如果生成的 gvim 窗口太小,您可能会遇到烦人的行为。该:simalt ~x序列是最大化窗口的一种巧妙方法(假设是英语 UI,因为它x是 Ma imize 的加速器x
  • 锦上添花的是,vim 7.3 具有“持久撤消”功能。参见例如:se undofile