协慌网

登录 贡献 社区

如何在 Vim 中复制到剪贴板?

是否可以直接从 Vim 复制到剪贴板? yy仅将内容复制到 Vim 的内部缓冲区。我想复制到操作系统的剪贴板。 Vim 中是否有这样的命令,或者您只能在 Vim 中提取内容?

答案

*寄存器将执行此操作。在 Windows 中, +*是等效的。 +*之间有细微的差别:

在 Windows 下,* 和 + 寄存器是等效的。但是,对于 X11 系统,它们有所不同。对于 X11 系统,* 是选择项,而 + 是剪切缓冲区(如剪贴板)。 http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*可能是您大多数时候想要的,所以我使用*因为它在两种环境下都能发挥预期的功能。

在 Linux 发行版中,您必须先安装vim-gtk (aka gvim )才能获得剪贴板功能。这是因为非 gtk vim 通常在没有 X11 支持的情况下进行编译。这是为了使其能够在仅控制台计算机(通常是服务器)上运行。

对于那些对于在拉动或放置时如何使用寄存器感到困惑的人,您只需要写"然后是寄存器的名称。因此,要将某些内容复制到剪贴板寄存器中,请键入"*y ,然后键入"*p (贷记:凯尔 · 马修斯(Kyle Mathews)

在 Mac OSX 上

  • 复制选定的部分:直观地选择文本(在正常模式下vV :w !pbcopy

  • 复制整个文件:%w !pbcopy

  • 从剪贴板粘贴:r !pbpaste

大多数Linux 发行版上,您可以替代:

  • pbcopy上面xclip -i -sel cxsel -i -b
  • pbpaste使用xclip -o -sel -cxsel -o -b
    -注意:如果您的发行版中未预先安装这些工具( xselxclip ),则可能可以在存储库中找到它们

在 vimrc 文件中,您可以指定自动使用系统剪贴板进行复制和粘贴。

在 Windows 上设置:

set clipboard=unnamed

在 Linux 上设置(vim 7.3.74+):

set clipboard=unnamedplus

注意:您可能需要使用 Vim 的最新版本才能使它们工作。

http://vim.wikia.com/wiki/Accessing_the_system_clipboard