【问题标题】:Working with vim on multiple monitors在多个显示器上使用 vim
【发布时间】:2010-10-22 09:26:45
【问题描述】:

我有三台显示器。

我通常在每个监视器上运行一个最大化的 xterm,附加到同一个 GNU screen 会话。

vim 可以使用类似的模型吗?是否可以运行三个 vim,都共享同一个“vim 会话”:

  • 每个 vim 窗口显示不同的 vim 选项卡
  • vim 设置在所有窗口之间共享
  • 没有得到“交换文件...已经存在!”如果我在两个选项卡上打开同一个文件,则会出现错误消息。

【问题讨论】:

    标签: vim gnu-screen


    【解决方案1】:

    我有一个可行的解决方案,其中两个 vim 实例进行通信。

    http://github.com/codeape2/vim-multiple-monitors

    如果检测到现有交换文件,它使用 SwapExists 自动命令来指示其他实例打开文件。

    【讨论】:

    • 我尝试使用你的 vim 脚本,但我不明白你认为 vim 如何理解 --servername 参数。我的 vim (7.3) 会因为错误消息 Unknown option argument: "--servername" 而死掉。我错过了什么?
    • 也许你的 vim 没有编译支持远程调用。在 vim 中,执行:version。检查功能是否包括+clientserver
    • 在 Ubuntu 中,我必须安装 vim-gnome 才能获得支持 +clientserver 的 vim。
    【解决方案2】:

    您可以在screen 下使用vim

    $ screen
    $ vim
    
    # on another terminal 
    $ screen -x
    # the same vim screen
    

    如果您的终端模拟器支持制表符(例如 gnome-terminal),您可以将其用作制表符(恕我直言,gnome-terminals 的制表符支持比 vim 自己的要好,除非您不能在不同的 vim 之间复制和粘贴会话,但是您可以改用系统复制粘贴缓冲区:“+y 和”+p)。

    但是,如果您使用的是 gvim,这将不起作用。

    【讨论】:

    • 这不是简单地反映正在发生的事情吗?
    • 我会这么认为....
    【解决方案3】:

    不,Vim 实例仅限于桌面上的单个应用程序窗口。不同的 Vim 实例有独立的会话。

    此外,请注意,如果您在两个不同的 Vim 实例中打开同一个文件,您不仅会收到“交换文件存在”消息,而且两个实例不共享缓冲区,因此在一个实例中所做的更改是独立于其他人。

    如果更改的文件保存在一个实例中,当您返回另一个 Vim 实例中的文件时,您将收到一条消息“文件自编辑开始后已更改”并询问您是否要重新加载文件(这将加载其他实例保存的更改,忽略您在当前实例中所做的任何更改。

    【讨论】:

      【解决方案4】:

      Neovim 是一个旨在提供 vim 附加/分离功能的项目,例如 tmux。 此功能尚未实现(2015 年 6 月 19 日),但可能很快就会实现。

      您可以在 neovim.io 上看到此项目的许多其他核心功能。

      【讨论】:

      • 我认为截至 2017 年 11 月,这仍然没有实现,也没有得到解决
      【解决方案5】:

      :设置 noswapfile :设置自动读取

      缓冲区不是以这种方式共享的,但如果你保存它,vim 会自动读取文件更改。而且您不会收到“交换文件存在”消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-27
        • 2017-01-29
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        相关资源
        最近更新 更多