1

我用腻子连接我的服务器(centos 7),并在 byobu 中运行 vim。
现在我在 byobu 中有 2 个窗口和两个文件,a.py 在 window-1 中,b.py 在 window-2 中。
我尝试将一些文本从 a.py 复制到 b.py,但遇到了一些问题。
如果我按照以下步骤操作,它可以正常工作:

STEP1:在window-1中,打开a.py,按yy,然后按退出:wq
STEP2:在window-2中,打开b.py,按p

但是,如果我保持 a.py 和 b.py 首先打开,或者不退出 a.py 之后yy,粘贴失败。看起来很奇怪,有没有漏掉什么?

我有set clipboard=unnamedplus.vimrc并且有+clipboardvim --version我的 vim 版本是 8.2.1438。

4

1 回答 1

0

由于 [viminfo] 文件,您可以跨 Vim 会话粘贴。默认情况下,Vim 将非空寄存器(包括默认寄存器)的内容存储到 viminfo 文件中。这就是为什么当您p在启动 Vim 后立即输入 (with ) 时,您会得到上次yy退出 Vim 之前最后一次拉出 (with ) 的内容。

viminfo 文件在 Vim 退出之前写入,在 Vim 初始化期间读取。这就是为什么如果你在退出第一个实例之前启动第二个 Vim 实例,它不会自动工作。然后 viminfo 文件将被第二个实例过早读取(或第一个实例写入太晚),以使您可以跨实例放置被抽出的文本。

:wviminfo您可以使用orwv命令显式写入 viminfo 文件。您可以使用:rviminfoor:rv命令显式读取它。因此,您可以在两个单独的实例中使用这两个命令通过 viminfo 文件传输寄存器信息,而无需退出它们。

我有 set clipboard=unnamedplus , .vimrc也 +clipboard 有 vim --version

如果您使用 X11 剪贴板集成,您可以使用它在 Vim 实例之间共享复制的内容。请注意,设置该'clipboard'选项只会影响 yanks,因此要从剪贴板寄存器中放置,您必须使用"+p.

但这假设您有一个有效的 X11 服务器要连接,这在您的情况下是不太可能的。首先,由于您使用 PuTTY 通过 SSH 进行连接,因此您需要使用 SSH 转发从客户端导出 X11 服务器。由于您使用的是 PuTTY,我假设您使用的是 Windows 机器,默认情况下它并没有真正运行 X11,所以您必须安装一个并运行它(说起来容易做起来难。)另外,因为您正在运行 Byobu,您也将无法重新连接到现有的 Byobu 会话,该会话很可能指向无效的 X11 服务器,使用创建 Byobu 会话时的连接信息,这可能不再匹配新的X11转发新SSH会话的连接信息……可以使这一切正常工作,但是如果您需要我的意见,那可能太麻烦了,尤其是对于同一远程框中的两个 Vim 实例的这种特殊用例。

于 2020-08-19T04:06:53.093 回答