问题描述
如果我使用第一个vim复制一行(使用yy
),如何粘贴到另一个终端的vim(使用p
)?是否有任何命令或设置可以做到这一点?我可以复制并粘贴到全局系统剪贴板中吗?
我知道以下方法是可行的,但我想要一个更简单的方法:
-
我不想退出第一个vim并重新打开第二个vim。
-
我不想使用单独的窗口(使用
:sp
)。
最佳解决方案
首先,您必须安装vim的clipboard-enabled版本。为了适应具有non-graphical环境的用户(例如Ubuntu Server用户),vim
和vim-tiny
不会使用此功能。您需要安装GVim,它可以图形方式或在您的终端中启动。 GVim将取代vim
命令。
您可以将文本从第一个vim中拉入’cut buffer’,然后将文本粘贴到第二个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 <leader>y :w! /tmp/vitmp<CR>
nmap <leader>p :r! cat /tmp/vitmp<CR>
第一个在可视模式下复制全部在/tmp /vitmp中,第二个复制文件中/tmp /vitmp中的内容
第四种方案
我在各种Unix-family机器之间移动,发现以下序列始终适用于我:
在源vi会话中:
-
使用
ESC m a
标记第一行 -
使用
ESC m b
标记最后一行 -
使用
:'a,'b w! 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
即可。您还可以通过运行来验证是否已启用剪贴板:
vim --version|grep clipboard
你应该看到+xterm_clipboard
。