我在Vim中选择了一个区域。如何将其复制到OS X剪贴板?

(OS X剪贴板可以通过管道写入到/usr/bin/pbcopy)


当前回答

在我的。vimrc中什么对我有用

set clipboard=unnamed
if has("unnamedplus") " X11 support
    set clipboard+=unnamedplus
endif

其他回答

对于MacVim和Windows Gvim,只需在~/.vimrc中添加以下内容:

set clipboard=unnamed

现在所有的操作,如yy, D和P工作与剪贴板。不需要在前面加上“*”或“+”。

如果剪贴板已启用,您可以通过点击“*y”将选定的区域复制到剪贴板

要查看它是否启用,请运行vim——version并查找+clipboard或-clipboard。例如,在我的10.5.6盒子上,它默认是不启用的:

% which vim
/usr/bin/vim
% vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Nov 11 2008 17:20:43)
Included patches: 1-22
Compiled by _www@b77.apple.com
Normal version without GUI.  Features included (+) or not (-):
...
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
...

如果它是用+剪贴板编译的,我就可以使用“*寄存器”来访问系统剪贴板。

我下载了7.2源代码并编译了它(简单如tar xjf vim-7.2.tar. gz)。Bz && CD vim72 && ./configure && make && sudo make install),并且剪贴板已启用:

% which vim
/usr/local/bin/vim
% vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Mar 24 2009 17:31:52)
Compiled by rampion@Myrrhy.local
Normal version with GTK2 GUI.  Features included (+) or not (-):
...
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
...

然而,即使在编译之后,当在终端中运行vim时,我也无法复制到剪贴板。只在X11.app中。

我使用:

map <C-x> :!pbcopy<CR>
vmap <C-c> :w !pbcopy<CR><CR>

效果很好。

可视地选择文本和类型:

ggVG
!tee >(pbcopy)

我觉得这比:

ggVG
:w !pbcopy

因为它不会闪现提示符:“按ENTER或键入命令继续”

使用寄存器“+”或“*”复制到剪贴板不工作?

原因:你的特定版本的vim编译时没有剪贴板支持。在控制台输入vim——version,你会看到-xterm_clipboard。使用gui包安装vim可以解决这个问题。在ubuntu上,你可以在shell上输入:

Sudo apt-get install vim-gui-common

现在再做vim——控制台版本。最有可能的是,您现在将看到+xterm_clipboard !!

所以,现在你可以复制任何东西到剪贴板使用寄存器+(像“+yy复制当前行到剪贴板)