与其他编辑器不同,vim 将复制的文本存储在自己的剪贴板中。因此,对我来说,从网页复制一些文本并将其粘贴到当前工作文件中非常困难。碰巧我必须打开 gedit 或手动输入。
我可以让 vim 在系统剪贴板之间进行粘贴吗?
最佳答案
请注意,如果:echo has('clipboard')
,则从系统剪贴板复制/粘贴将不起作用。返回 0。在这种情况下,vim 不会使用 +clipboard
进行编译。功能,您必须安装不同的版本或重新编译它。一些 Linux 发行版默认提供最小化的 vim 安装,但是如果您安装 vim-gtk
或vim-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/