vim:复制到*寄存器的文本消失了


0

我遇到了一个问题,即文本被拉到后unnamed无法粘贴。这只发生在我通过SSH连接到另一台机器时。两台机器都运行相同版本的OS X(10.9.2),Vim(7.4,编译brew install vim --override-system-vim),两台机器的输出相同:

vim --version | head -n 2
=> VIM - Vi IMproved 7.4(2013年8月10日,编译时间2014年3月12日13:11:40)
=> MacOS X(unix)版本

:echo has("clipboard")
=> 1

:set clipboard?
=> clipboard=unnamed


在文档中,当我抽出文本然后立即尝试粘贴它时,我明白了E353: Nothing in register *。我也试过"*y并收到同样的错误。当我进入插入模式时cmd-v,它粘贴我在vim之外复制的最后一件事。我尝试过"+y"+p但接收到相同的错误(引用*)我认为是预期的,cmd-v但仍然没有粘贴我想要的。

当我在机器上进行SSH连接时,如何让vim剪贴板正常工作?

Answers:


0

您的机器不共享通用剪贴板:此处复制的内容无法粘贴在此处,反之亦然。

X11 Forwarding是一个非常简单和通用的解决方案,它允许您共享剪贴板甚至在本地运行基于X的远程GUI应用程序,但即使我经常从Mac OS X到Linux运行,我也不知道它是否在两个之间工作Mac电脑。我想如果两个人都有XQuartz可以运行,但我老实说从未尝试过(现在也不能)。

您可以尝试以下方法:

  1. 在两台Mac上启动X11,
  2. 在“客户端”上,连接到“服务器” $ ssh -X username@host

看看你是否能够从两台机器复制东西。

不过,我认为这种工作流程非常脆弱,而且不必要地复杂化。


我会给出一个镜头,谢谢你的抬头。与此同时,我有一个问题:如果我已经连接到机器上,那么不应该在远程机器的上下文中运行并粘贴两者吗?在一个带有一个缓冲区的vim会话的简单示例中,vim应该对两个操作使用相同的寄存器,对吗?问题是因为它被发送到未命名的,我应该考虑SSH实例并在这种情况下强制vim复制到另一个寄存器?
Josh Whittington 2014年

从Vim外部可以看到的唯一Vim寄存器是*+。在Mac OS X上,它们是相同的,所以使用其中一个并不重要,set clipboard=unnamed无论如何都会使它无关紧要,因为你在Vim中拉出的东西被放入系统的剪贴板中。X11默认设置(您应该检查)以“捕获”Mac OS X的剪贴板,这样,借助X11 Forwarding,您可以在本地粘贴您在服务器上复制的内容并远程粘贴您在客户端上复制的内容。它在两个Linux之间或Mac OS X和Linux之间运行良好。
romainl 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.