小编典典

如何从(并复制到)系统的剪贴板进行 vim 粘贴?

all

与其他编辑器不同,vim 将复制的文本存储在自己的剪贴板中。因此,我很难从网页中复制一些文本并将其粘贴到当前的工作文件中。碰巧我必须打开 gedit
或手动输入。

我可以在系统的剪贴板上进行 vim 粘贴吗?


阅读 180

收藏
2022-02-28

共1个答案

小编典典

请注意,如果 返回 0 ,则从系统剪贴板复制/粘贴 将不起作用:echo has('clipboard')。在这种情况下,vim
没有与该+clipboard功能一起编译,您必须安装不同的版本或重新编译它。一些 linux 发行版默认提供最小的 vim 安装,但如果你
安装vim-gtkorvim-gtk3,你仍然可以获得额外的功能。

和寄存器用于系统的剪贴板 ( "*) 。根据您的系统,他们可能会做不同的事情。例如,在 OSX 或 Windows 等不使用 X11
的系统上,该寄存器用于读取和写入系统剪贴板。在 X11 系统上,两个寄存器都可以使用。有关更多详细信息,请参阅,但基本上类似于 X11
的选择(通常复制您使用鼠标选择的内容并使用鼠标中键粘贴),并且类似于 X11 的选择(正确的剪贴板)。"+``:help registers``"*``:help x11-selection``"*``_PRIMARY_``"+``_CLIPBOARD_

如果这一切都超出了您的想象,请尝试使用"*yy"+yy将一行复制到系统的剪贴板。假设您有适当的编译选项,一个或另一个应该可以工作。

您可能希望将其重新映射为对您更方便的东西。例如,您可以输入vnoremap <C-c> "*y您的~/.vimrc,以便您可以直观地选择并按Ctrl+c拉到系统的剪贴板。

您可能还想查看 中'clipboard'描述的选项:help cb。在这种情况下,您可以:set clipboard=unnamed:set clipboard=unnamedplus使所有拉/删除操作自动复制到系统剪贴板。在某些情况下,当您在剪贴板中存储其他内容时,这可能会带来不便,因为它会覆盖它。

要粘贴,您可以使用"+p"*p(同样,取决于您的系统和/或所需的选择),或者您可以将它们映射到其他东西。我明确地键入它们,但我经常发现自己处于插入模式。如果您处于插入模式,您仍然可以使用<C-r><C-p>*或以适当的缩进方式粘贴它们<C-r><C-p>+。见:help i_CTRL-R_CTRL-P

还值得一提的是 vim 的paste选项 ( :help paste)。这将 vim 置于一种特殊的 “粘贴模式”
,禁用其他几个选项,允许您使用终端仿真器或多路复用器熟悉的粘贴快捷方式轻松粘贴到 vim。(只需键入:set paste以启用它,粘贴您的内容,然后键入:set nopaste以禁用它。)或者,您可以使用该pastetoggle选项设置切换模式的键码 (
:help pastetoggle)。

我建议使用寄存器而不是这些选项,但如果它们仍然太吓人,当你完善你的 vim 印章时,这可能是一个方便的解决方法。

有关:help clipboard更多详细信息,请参阅。

2022-02-28