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

sam*_*sam 46 vim clipboard

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

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

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

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

Jer*_*err 52

首先,您必须安装支持剪贴板的 vim 版本。为了适应具有非图形环境的用户(例如 Ubuntu Server 用户),vim并且vim-tiny不要使用此功能。你会想要安装GVim 安装 GVim,以图形方式或在您的终端中启动。GVim 将替换该vim命令。

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

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

"+yy
Run Code Online (Sandbox Code Playgroud)

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

"+p
Run Code Online (Sandbox Code Playgroud)

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


小智 22

对我有用的最佳解决方案(不需要我改变我的键绑定习惯)在这里:https : //stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard-in- vim

只是放:

set clipboard=unnamedplus
Run Code Online (Sandbox Code Playgroud)

在您的.vimrc.


小智 16

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

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个作品。使用 `"*y` 似乎在服务器上被破坏了 (2认同)

小智 8

我在各种 Unix 系列机器之间走来走去,发现以下顺序总是对我有用:

在源 vi 会话中:

  1. 使用ESC m a标记第一线
  2. 使用ESC m b标记最后一行
  3. 用于:'a,'b w! xfer将范围写出到临时文件

在目标会话中:

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

我知道它不漂亮,但它总是对我有用!