如何使用寄存器从一个 vim 实例复制到另一个实例

如何使用寄存器从一个 vim 实例复制到另一个实例

如何选择+寄存器?我按照以下说明将文本从 vim 复制/粘贴到另一个 vim 时遇到问题:

In the vim, highlight, select + register, and yank (save) to it:
Shift-v
"+y

In the second vim, select + register, and paste from it:
"+p

我想我按错了键。当它说时,我是否只需按顺序按下"+y",, ? (即+ 、+ 、)。它对我不起作用。+yShift'Shift=y

我在 X11 终端中使用 Red Hat 和 vim。 vim 版本是

$vim --version | grep xterm_clipboard
-xterm_clipboard -xterm_save

答案1

Vim 使用系统剪切和粘贴机制在实例之间复制文本。当您在终端中运行 vim 时,它无法直接访问任何剪切和粘贴机制。如果 vim 运行在 xterm 或其他提供 X 选择和剪贴板内容访问的终端中,vim 可以使用它;然而,你的 vim 二进制文件在编译时并不支持该功能。

如果两个 vim 实例都在同一台机器上运行,则可以使用临时文件进行通信:

:w ~/vim.tmp
:r ~/vim.tmp

如果两个 vim 实例都连接到同一个 X 显示(因为DISPLAY环境变量指向同一个 X 显示,vim 程序本身不需要任何类型的 X 支持),您可以通过外部使用 X 选择程序如谢尔或者剪辑。您可以省略p-selection primary或选择不同的选择(-s/secondary-b/ clipboard)。使用:w !(注意空格)复制:

:w !xsel -ip
:w !xclip -i -selection primary

:r!粘贴:

:r !xsel -op
:r !xclip -o -selection primary

答案2

在 Red Hat(和 Fedora)上,使用该/usr/bin/vimx命令。如果您使用该命令,+寄存器(系统剪贴板)将起作用vimx

vimx 支持编译于以下版本的系统剪贴板:

$ vimx --version | grep xterm_clipboard
+eval            +mouse_dec       +startuptime     +xterm_clipboard

vimx位于vim-X11包装中,其中还包含gvim.

使用这个别名:

alias vim=/usr/bin/vimx

答案3

您的示例使用+寄存器。要使用?寄存器,只需使用相同的命令,将 替换+?

例如:

"?y
"?p

如果您尝试使用系统剪贴板在 vim 实例之间粘贴,您需要g在命令前面添加 a ,因此

"+gy
"+gp

相关内容