将文本从在xterm中运行的Vim 7.2复制到Windows剪贴板

时间:2009-12-09 09:23:30

标签: vim clipboard copy-paste putty xterm

我正在使用Vim 7.2,使用+ xterm_clipboard编译,在xterm中通过putty。我已将set clipboard=unnamed放在.vimrc中,而且从我在其他线程中读到的内容中,这应该将所有yanks / deletes放到系统剪贴板中。但是,当我试图将我已经拉到的任何东西粘贴到像记事本这样的MS应用程序时,它无效。

当我使用鼠标在vim中选择文本时,它会自动复制到系统(MS剪贴板)。我想在使用3yy等键盘命令时拥有相同的功能。

谁能告诉我我做错了什么?

3 个答案:

答案 0 :(得分:2)

尝试

"+3yy
"*3yy

"+p
"*p

答案 1 :(得分:1)

如果你在本地运行vim,那么

"+p
"*p
如黑客所说,

会起作用。由于你被扔进了另一个盒子里,这些只是将文本复制到你要扔进去的盒子的剪贴板中。

你需要的是复制文本的putty方法,它只是用鼠标突出显示要复制的文本

虽然在vim中被破坏了,但我通常使用 ALT +用鼠标突出显示(用于块选择),因为我通常有行号。

希望这有帮助!

答案 2 :(得分:0)

我试图找出如何在PuTTY中使用vim(不涉及xterm)与Windows剪贴板进行交互。

到目前为止,我的研究表明这是不可能的。 xterm具有剪贴板交互终端转义序列,但它们在xterm中默认禁用。它们可能在PuTTY中根本没有实现。这可能是出于安全原因:您不希望远程系统拥有对剪贴板的完全访问权限。

我不确定vim的xterm_clipboard功能是否应该使用,无论如何。到目前为止,我的搜索只会让人抱怨它没有启用,或者讨论如何获得启用它的vim,而不是它实际上是如何实现的。我发现的最好的是this guide提及它,但没有说任何可以将其固定以逃避序列与X选择与X剪贴板相关的内容。 (是的,X11有一个选择和一个单独的剪贴板。有些复制方法只设置一个或另一个。)

Vim的剪贴板支持直接与X服务器对话。在Linux桌面上,终端中的vim(在我的情况下为Konsole):"*dd确实将行放入剪贴板。

使用

(unset DISPLAY; strace -s256 -o /dev/pts/18 vim some_file.txt)
vim没有可以与之交谈的X服务器。 (pts18是另一个终端窗口的tty。)我认为vim可能会使用xterm escape sequences来设置剪贴板,但它并没有。整个区域没有write(1, ...)系统调用,因此它显然没有尝试使用转义序列通过xterm将该区域放入剪贴板。

我在Ubuntu 15.04上使用TERM=xterm在Konsole内部运行了这个。我也试过一个真正的xterm

哦,xterm默认禁用GetSelection/SetSelection。也许启用此功能后,vim会尝试使用它吗? IDK,如果这有帮助,因为PuTTY也必须支持它,这是不可能的。

相关问题