如果未关闭原始文件,则byobu中的vim粘贴失败

问题描述

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

第1步:在窗口1中,打开a.py,按yy,然后用:wq退出
步骤2:在window-2中,打开b.py,然后按p

但是,如果我先保持a.py和b.py打开,或者在yy之后不退出a.py,则粘贴失败。 似乎很奇怪,有什么遗漏吗?

我在set clipboard=unnamedplus中有.vimrc,在+clipboard中有vim --version,我的vim版本是8.2.1438。

解决方法

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

viminfo文件是在Vim退出之前写的,并在Vim初始化期间读取。这就是为什么如果您在退出第一个实例之前启动了Vim的第二个实例,将无法自动运行的原因。然后,第二个实例将太早读取viminfo文件(或第一个实例将太晚写入),以使您可以将拉动的文本跨实例放置。

您可以使用:wviminfowv命令显式地写入viminfo文件。您可以使用:rviminfo:rv命令显式读取它。因此,您可以在两个单独的实例中使用这两个命令来通过viminfo文件传输注册信息,而不必退出它们。

我在{{1}中有set clipboard=unnamedplus,并且在.vimrc中有+clipboard

如果使用X11剪贴板集成,则可以使用它在Vim实例之间共享复制的内容。请注意,设置vim --version选项仅会影响拉键,因此要从剪贴板寄存器中放入,必须使用'clipboard'

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...