"+y 不复制到剪贴板

vic*_*ico 5 vim

我正在尝试将一段文本复制到系统剪贴板。首先,我做一个直观的选择:选择",然后+y

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

Cbh*_*ihe 7

在终端输入:

$ vim --version | grep -e version -e +mouse.* -e +clipboard
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

set mouse=a
Run Code Online (Sandbox Code Playgroud)

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

输入:help mouse您的VI / vim的会话(正常模式),如果你想知道更多。如果您启用了该选项,您仍然可以使用鼠标在 vi 中复制并粘贴到 vim 之外。为此,只需shift在 vi/vim 中突出显示文本时按下即可。您的 vi/vim 会话 shell 将表现得好像set mouse=a没有在该任务的持续时间内设置。这被称为鼠标的“xterm 处理”。如果您决定阅读有关此的技术资料,您将遇到该表达。

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

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

  • 将光标置于可视模式并突出显示文本
  • 如果你用 猛拉文本"*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
Run Code Online (Sandbox Code Playgroud)

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

...如果你真的打算用 vim 做任何事情,你会这样做。;-)

如果你这样做,你可能想关闭所有的 vim 会话,甚至可能想要获取你的.vimrc文件,尽管我不清楚。注销并重新登录不会受到伤害。

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

编辑:

对于第 I) 部分:您可以"*y在可视模式下用鼠标选择自动 X11 主寄存器复制,方法是将其包含set go+=a到 yr~/.vimrc文件中。

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

  • 只需简单地安装 vim-gtk 就可以解决我的问题。 (4认同)