如何在vim的不同实例之间复制数据?

如果我使用第一个vim来复制一行(使用yy ),如何粘贴到另一个终端的vim(带有p )? 是否有任何命令或设置可以做到这一点? 我可以复制并粘贴到全局系统剪贴板中吗?

我知道以下方法是可行的,但我想要一个更简单的方法:

  1. 我不想退出第一个vim并重新打开第二个vim。

  2. 我不想使用单独的窗口(使用:sp )。

首先,您必须安装启用了剪贴板的vim版本。 为了适应非图形环境的用户(例如Ubuntu Server用户), vimvim-tiny不会涉及此function。 你想要安装GVim 安装GVim ,可以图形方式或在终端中启动。 GVim将取代vim命令。

您可以将文本从第一个vim中拉入“剪切缓冲区”,然后将文本粘贴到第二个vim中。 要复制到全局剪切缓冲区,请使用+寄存器。 "键允许您指定执行抽头或粘贴操作时要使用的寄存器。

在第一个vim中,将一行放入+寄存器:

 "+yy 

然后,从第二个vim中的+寄存器粘贴:

 "+p 

有关可用寄存器的更多信息,请查看:help registers 。 您还可以使用"+p粘贴从系统上任何其他来源复制的文本。

最适合我的解决方案(不要求我改变我的键绑定习惯)在这里: https : //stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard-in- VIM

刚放:

 set clipboard=unnamedplus 

在你的.vimrc

我喜欢比尔的解决方案,我创建了一个映射:

 vmap y :w! /tmp/vitmp nmap p :r! cat /tmp/vitmp 

第一个在可视模式下复制全部在/ tmp / vitmp中,第二个复制文件中/ tmp / vitmp中的内容

我在各种Unix系列机器之间移动,发现以下序列总是适用于我:

在源vi会话中:

  1. 使用ESC ma标记第一行
  2. 使用ESC mb标记最后一行
  3. 使用:'a,'bw! xfer :'a,'bw! xfer将范围写出到临时文件

在目标会话中:

  1. 将光标移动到插入行
  2. 使用ESC :r xfer读入文本

我知道它不漂亮,但它总是适合我!

它实际上非常简单:安装支持剪贴板的vim版本。 如果您的vim没有,请获取以下任何一项:

 sudo apt-get install vim-athena sudo apt-get install vim-gnome sudo apt-get install vim-gtk 

安装完成后,只需运行vim 。 您还可以通过运行来validation是否已启用剪贴板:

  vim --version|grep clipboard 

你应该看到+xterm_clipboard

它并不完全使用yy,但如果您选择要用鼠标复制的文本(有时您可能需要使用Shift- [拖动]),请切换到另一个终端窗口并执行[中间单击]或Shift- [中间单击],文本将插入当前插入点。

这适用于大多数命令行和GUI程序,不仅适用于vim。

你可能都讨厌这个答案。 我过去常常在80年代在各种Unix电脑上工作,并且最近有机会在Linux上玩游戏。

我的剪切和粘贴解决方案是使用在Windows上运行的Putty访问我的Linux机器。

Putty允许您通过简单地突出显示它在窗口中的任何txt。 然后,您可以转到另一个Putty窗口/会话并右键单击以粘贴。

再简单不过了。 现在有了vim。 太糟糕了,不在我的日子里,它会帮助我抵御emacs黑手党。