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


当前回答

我在我的.vimrc中写了一个简单的行来让复制工作。希望这能帮助到一些人。不幸的是,我的vim没有安装剪贴板支持,所以这些建议对我都不起作用。基本上,将这一行粘贴到你的.vimrc中:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

如果你想了解详细信息,你可以在我的博客上阅读

其他回答

如果你正在使用GVim,你也可以设置guioptions+=a。这将触发自动复制到剪贴板的文本,您在视觉模式突出显示。 缺点:注意,高级剪贴板管理器(历史)将在这种情况下得到你所有的选择历史…

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

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

*可能是您大多数时候想要的,所以我使用*,因为它在两种环境中都能正常工作。

在Linux发行版中,你必须先安装vim-gtk(又名gvim)才能获得剪贴板功能。这是因为非gtk vim通常在编译时没有X11支持。这是为了允许它只在控制台机器(通常是服务器)上运行。

对于那些在拉取或放入时如何使用寄存器感到困惑的人,你只需写上“然后是寄存器的名称”。因此,要将内容复制到剪贴板寄存器,您只需输入“*y”,然后输入“*p”(来源:Kyle Mathews)

也许有人会觉得有用。我想要独立于X剪贴板,并且仍然能够在两个运行的vims之间复制和粘贴一些文本。这段小代码将所选文本保存在temp.txt文件中以供复制。将下面的代码放入您的.vimrc中。使用CTRL-c CTRL-v来完成这项工作。

cp /dev/null ~/temp.txt && cat > ~/temp.txt

Noremap:r !cat ~/temp.txt

Ubuntu - 2018年7月

使用寄存器“+”复制到系统剪贴板(即。+y而不是y)。

同样,您可以从“+”粘贴从系统剪贴板(即。"+p而不是p)。

您还必须确保编译的vim支持剪贴板。试一试:

vim --version | grep .xterm_clipboard -o 

如果它是-xterm_clipboard(一个负号前缀),则不支持。

下面是一些使用支持剪贴板的vim工作版本进行交换的说明。

$ sudo apt-get purge vim 
$ sudo apt-get autoremove (removes any extraneous vim dependency packages from system) 
$ sudo apt-get install vim-gnome (or `sudo apt-get install vim-gtk3` for newer Ubuntu versions) 

再次检查vim——version | grep .xterm_clipboard -o,您可以确认剪贴板现在是可用的(即。+ xterm_clipboard)

总结一下,让新手更容易上手,

复制当前行,在命令模式输入:

"*yy

要复制整个文件/缓冲区,在命令模式下,首先通过gg转到开头,然后键入

"*yG

如上所述,这需要vim——version中的+clipboard,这表示支持剪贴板,-clipboard表示不支持。