vim - 如何使 vim 从系统剪贴板粘贴(并复制到)?

标签 vim editor clipboard

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

我可以让 vim 在系统剪贴板之间进行粘贴吗?

最佳答案

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

"*"+寄存器用于系统剪贴板( :help registers )。根据您的系统,它们可能会执行不同的操作。例如,在不使用 X11(如 OSX 或 Windows)的系统上,"*寄存器用于读取和写入系统剪贴板。在 X11 系统上,这两个寄存器都可以使用。请参阅:help x11-selection有关更多详细信息,但基本上是 "*类似于 X11 的 _PRIMARY_选择(通常复制您用鼠标选择的内容并用鼠标中键粘贴)和 "+类似于 X11 的 _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了解更多详细信息。

关于vim - 如何使 vim 从系统剪贴板粘贴(并复制到)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489428/

相关文章:

shell - 如何设置 vimrc 标签以使用 shell 环境变量

vim - 如何在vim中获取光标下突出显示的组名?

c++ - Netbeans:在 C++ 64 位 Ubuntu 上导航-> 使用 "Cannot Open Element"转到声明/定义损坏

editor - 是否有用于 Notation3 (n3) 文件的独立或离线查看器?

clipboard - 如何修复 Windows 上 VNC 中损坏的粘贴剪贴板

c# - IDataObject.GetData() 总是在我的类中返回 null

c++ - Vim:字符串间换行

vim - 我可以通过键映射将参数传递给函数吗?

c# - 如何创建 WPF 形状编辑器?

java - 在 Java 中复制到剪贴板