如何在vim的不同实例之间复制数据?
如果我使用第一个vim来复制一行(使用yy
),如何粘贴到另一个终端的vim(带有p
)? 是否有任何命令或设置可以做到这一点? 我可以复制并粘贴到全局系统剪贴板中吗?
我知道以下方法是可行的,但我想要一个更简单的方法:
-
我不想退出第一个vim并重新打开第二个vim。
-
我不想使用单独的窗口(使用
:sp
)。
首先,您必须安装启用了剪贴板的vim版本。 为了适应非图形环境的用户(例如Ubuntu Server用户), vim
和vim-tiny
不会涉及此function。 你想要安装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会话中:
- 使用
ESC ma
标记第一行 - 使用
ESC mb
标记最后一行 - 使用
:'a,'bw! xfer
:'a,'bw! xfer
将范围写出到临时文件
在目标会话中:
- 将光标移动到插入行
- 使用
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黑手党。