我正在尝试将一段文本复制到系统剪贴板。首先,我进行视觉选择:选择,"
然后。+
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> "+y
CTRLcCTRLv"+y