首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果源文件未关闭,则按byobu粘贴vim失败

如果源文件未关闭,则按byobu粘贴vim失败
EN

Stack Overflow用户
提问于 2020-08-18 11:54:36
回答 1查看 29关注 0票数 1

我将我的服务器(Centos 7)与putty连接起来,并在byobu中运行vim。

现在我在byobu中有两个窗口和两个文件,分别是window-1中的a.py和window-2中的b.py。

我尝试将一些文本从a.py复制到b.py,但遇到了一些问题。

如果我遵循下面的步骤,它可以正常工作:

STEP1:在window-1中,打开a.py,按yy,然后使用:wq退出

STEP2:在window-2中,打开b.py,按p

但是如果我保持a.py和b.py在一开始是打开的,或者在yy之后退出a.py,粘贴失败。这看起来很奇怪,有没有遗漏什么?

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

EN

回答 1

Stack Overflow用户

发布于 2020-08-19 12:06:53

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

viminfo文件是在Vim退出之前写入的,并在Vim初始化期间读取。这就是为什么如果您在退出第一个实例之前启动Vim的第二个实例,它将不会自动工作。然后,viminfo文件将被第二个实例过早地读取(或者被第一个实例太晚地写入),从而允许您将拖拽的文本放入多个实例。

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

我在

.vimrc中使用了set clipboard=unnamedplus,在.vimrc中使用了+clipboard

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63461640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档