问题描述
我用腻子连接服务器(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文件(或第一个实例将太晚写入),以使您可以将拉动的文本跨实例放置。
您可以使用:wviminfo
或wv
命令显式地写入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实例的特定用例而言在同一远程框中。