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

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

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

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

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

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

答案1

首先,您必须安装支持剪贴板的 vim 版本。为了适应非图形环境的用户(例如 Ubuntu Server 用户),vim不要vim-tiny使用此功能。您需要安装维姆 安装 GVim,可以通过图形方式或终端启动。GVim 将替换该vim命令。

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

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

"+yy

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

"+p

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

答案2

对我而言最有效(不需要我改变我的按键绑定习惯)的解决方案是:https://stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard-in-vim

只需输入:

set clipboard=unnamedplus

在你的.vimrc

答案3

我喜欢Bill的解决方案,并且创建了一个映射:

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>

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

答案4

它实际上非常简单:安装一个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

相关内容