"+y 不复制到剪贴板

"+y 不复制到剪贴板

我正在尝试将一段文本复制到系统剪贴板。首先,我进行视觉选择:选择,"然后。+y

然后我收到一条消息7 lines yanked。当我按 时p,数据被粘贴在 中vim;但是,当我尝试将数据粘贴到任何其他程序时 - 没有结果。我该如何解决这个问题?

答案1

在终端中输入:

$ vim --version | grep -e version -e +mouse.* -e +clipboard

理想情况下,您huge安装的版本带有剪贴板功能以及内置的多种鼠标功能。为了以防万一,请通过编辑您的问题来报告结果。

vi/vim 使用与普通 GUI 不同的剪贴板:即它有自己的剪贴板,因此如果您尝试使用鼠标CTRL+ x/ CTRL+从 vim 打开的文件复制/粘贴到 vim 外部的任何地方v,您最终会得到...什么都没有。

我) 尝试使用鼠标(之后我会回答你的确切问题)

在 vim 中打开一个文件,按下鼠标左键突出显示文本。用鼠标右键单击突出显示的文本。如果您没有看到启用的“复制”上下文菜单选项,则可能意味着您已设置

set mouse=a

在您的 vi/vim 配置中的某个位置。此选项允许您在 4 种最常见的 vim 模式下使用鼠标:正常(转义)、插入、可视、cmd 行模式。

:help mouse如果您想了解更多信息,请输入您的 vi/vim 会话(正常模式)。如果您启用了该选项,您仍然可以使用鼠标在 vi 中复制并在 vim 外粘贴。为此,只需在shiftvi/vim 中突出显示文本时按下。您的 vi/vim 会话 shell 的行为将如同set mouse=a在该任务期间未设置一样。这被称为鼠标的“xterm 处理”。如果您决定阅读有关此方面的技术资料,您将遇到该表述。

II)在 vi/vim 中的可视模式下使用寄存器

当您尝试复制某些内容以便稍后将其粘贴到 vim 之外时,可以从 vi/vim 中的命令行调用两个寄存器。我将它们称为“*”和“+”寄存器(不是它们的真实名称)。

  • 将光标置于可视模式并突出显示文本
  • 如果您使用 提取文本"*y,则通常可以使用鼠标中键将文本粘贴到 vi/vim 之外,例如 .odt 文件中。其他寄存器不受影响。
  • 如果使用 进行复制"+y,实际上是将内容复制到所谓的“剪贴板”中,然后从中粘贴。在这种情况下,您将破坏剪贴板中截至当时的内容。要将内容粘贴到 vi/vim 之外,只需使用常用的CTRL+ v`。

注意:粘贴后,两个寄存器的状态均不会改变。它们仍包含与之前相同的内容。您可以返回 vi/vim 并使用 或"*p"+p在光标后)粘贴其内容,或者也可以只使用p

实际上,您可以通过将所有内容粘贴到剪贴板来更改上述行为。:help clipboard在正常的 vi/vim 模式中执行此操作以了解有关剪贴板的更多信息。通常,使用"*y或访问不同的寄存器"+y非常实用,因为当您想要保留剪贴板中已有的内容时,只需使用"*y来提取或"*d来剪切 -> 不会对剪贴板造成任何干扰!

如果使用"+y"+d无法正常工作,似乎是因为您没有安装 vim 所需的所有编译功能。特别是如果您没有“剪贴板”功能,请继续vim-gtk从 Ubuntu 软件中心安装软件包,或者:

$ sudo apt-get install vim-gtk

这将为您提供很好的设置,以及额外的附加组件,以便以交互方式查看用 C、Python、latex、Perl、Ruby 和其他语言编写的文件,更不用说如果您需要的话,还可以使用 vim 的本地 html 文档。

...如果您真的要使用 vim 做任何事情,您就会这样做。;-)

如果你这样做,你可能需要关闭所有 vim 会话,甚至可能要获取文件.vimrc,尽管我对此不太清楚。不过注销并重新登录不会有什么坏处。

而这只是触及了 vi 的表面……

编辑:

"*y对于第 I 部分):您可以通过在可视模式下使用鼠标选择并包含set go+=a到 yr文件中来安排自动 X11 主寄存器复制~/.vimrc

对于第 II 部分):如果您在安装 vim 时编译了剪贴板功能,则可以通过在 ~/.vimrc 中插入,将剪贴板复制映射到CTRL+ 。此后,您只需突出显示文本,执行+即可复制到剪贴板,然后执行+即可粘贴到 vi/vim 之外的任何位置。在这种情况下,这里不需要更多。此特定映射仅对可视模式有效。c:vmap <C-C> "+yCTRLcCTRLv"+y

相关内容