Vim:将select复制到OS X剪贴板

假设你已经在vim中select了一个区域。 你怎么能把它复制到OS X剪贴板?

(提示:OS X剪贴板可以通过pipe道写入/usr/bin/pbcopy

根据我使用的vim版本,我可以使用+寄存器来访问剪贴板。

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing可能有一些想法也适合你。;

对于MacVim和Windows Gvim ,只需将以下内容添加到~/.vimrc

 set clipboard=unnamed 

现在,所有的操作,如yyDP ,与剪贴板一起工作。 不需要用"*"+作为前缀。

如果剪贴板已启用,则可以通过点击"*y将所选区域复制到剪贴板

要查看是否已启用,请使用vim –version并查找+clipboard-clipboard 。 例如,在我的10.5.6框中默认没有启用它:

  %哪个vim
在/ usr / bin中/ VIM
 %vim --version
 VIM  -  Vi改进7.2(2008年8月9日,编译2008年11月11日17时20分43秒)
包含的修补程序:1-22
编译_www@b77.apple.com
没有GUI的正常版本。  function包括(+)或不( - ):
 ...
 -clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info +评论
 ...

如果它已经用+clipboard编译,我可以使用"*寄存器来访问系统剪贴板。

我下载了7.2源代码并编译了它(用tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install ),并且启用了剪贴板:

  %哪个vim
在/ usr / local / bin目录/ VIM
 %vim --version
 VIM-Vi改进了7.2(2008年8月9日,编译Mar 24 2009 17:31:52)
由rampion@Myrrhy.local编译
 GTK2 GUI的普通版本。  function包括(+)或不( - ):
 ...
 + clientserver +剪贴板 + cmdline_compl + cmdline_hist + cmdline_info +评论
 ...

但是,即使在编译之后,在Terminal.app中运行vim时,我也无法复制到剪贴板,只能在X11.app中。

您可以直观地select文本并input:w !pbcopy<CR>

或者你可以在~/.vimrc文件中包含下面的键映射。 他们以可视模式将文本剪切/复制到操作系统的剪贴板。

 vmap <Cx> :!pbcopy<CR> vmap <Cc> :w !pbcopy<CR><CR> 

来源: http : //drydevelopment.com/blog/vim-pbcopy-on-os-x

在任何yank命令之前加双引号( * )将结果复制到复制缓冲区中,这也适用于Windows和Linux。

在macos 10.8上,vim是用-clipboard编译的,所以使用"*y你需要重新编译。幸运的是brew install vim会为你轻松编译一个新的版本,它将成为+clipboard

从视觉上select文字并input:

 ggVG !tee >(pbcopy) 

我发现比以下更好:

 ggVG :w !pbcopy 

由于它不闪烁提示:“按ENTER键或键入命令继续”

如果您使用MacPorts,则可以通过以下方式升级您的VIM以包含剪贴板支持:

端口安装vim + x + x11

现在,您可以使用“+注册”将您的文本直接拖放到Mac剪贴板上。

如果你在MacOS X上:

 $ brew install vim $ vim --version VIM - Vi IMproved 7.4 [...] 

然后,添加到您的.vimrc:

 set clipboard=unnamed 

现在只需要在vim中执行:%y ,将所有内容复制到剪贴板。

我只是试过了

 map <Cx> :!pbcopy<CR> vmap <Cc> :w !pbcopy<CR><CR> 

它工作得很好。

就我而言,我只需要做:

 :set mouse=v 

请访问superuser.com上的原始解决scheme

如果你的vim没有使用剪贴板编译,你希望复制选中的文本而不是整行,你不想安装macvim或其他GUI,最简单的解决办法就是将这行添加到你的.vimrc中:

 map <Cc> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR> 

要使用它,只需在视觉上select要复制的文本,然后selectControl-C。 如果你想完整的解释这一行, 请阅读这里

使用Homebrew的 vim: brew install vim

Mac(从10.10.3优胜美地开始)预装了一个没有启用clipboard标志的系统vim。

您可以为自己编译vim并启用该标志,或者简单地使用正确设置的Homebrew的vim。

要亲自看到这个,使用/usr/bin/vim --version检查库存系统vim

你会看到像这样的东西:

 $ /usr/bin/vim --version VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 5 2014 21:00:28) Compiled by root@apple.com Normal version without GUI. Features included (+) or not (-): ... -clientserver -clipboard +cmdline_compl ... 

请注意-clipboard

随着自制软件的vim你反而得到

 $ /usr/local/bin/vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42) MacOS X (unix) version Included patches: 1-712 Compiled by Homebrew Huge version without GUI. Features included (+) or not (-): ... +clipboard ... 

注意+clipboard

命令-C? 这至less适用于在Terminal.app中为鼠标select的文本启动的vim。

Fakeclip实现了+和*缓冲区,如果它们不是本机支持。

如果您的VIM安装上有+剪贴板选项(您可以使用:版本进行检查),并且您处于可视模式,则可以执行“+ y这将把select内容推送到作为剪贴板的缓冲区。

我已经添加了下面的地图到我的vimrc,它工作正常。

vmap y“+ y用这个我可以做领导钥匙跟随由y复制到剪贴板以视觉模式

nmap p“+ p用这个我可以做领导键p按正常模式从剪贴板粘贴。

PD:在Ubuntu上,我必须安装vim-gtk来获得+剪贴板选项。

您可以在Mac上使用MacVim ,以使用标准操作系统密钥轻松访问剪贴板。

它也完全向后兼容正常的Vim,所以我甚至不必有一个单独的.vimrc

我的主要问题是VIM的默认osx版本。 通过homebrew安装它添加+clipboard的build设。

检查

 vim --version 

如果它说-clipboard+clipboard

对于Ubuntu用户,您要使用剪贴板检索的软件包是vim-full。 其他软件包(vim-tiny,vim)不包括剪贴板function。

在Mac上,当其他东西似乎工作 – select与鼠标,右键单击select副本。 UFF

我目前在OS X 10.9和我的努力编译vim + xterm_clipboard没有给我带来什么。 所以我现在的解决scheme是在terminal模式下使用MacVim,在我的〜/ .vimrc文件中set clipboard=unnamed了选项set clipboard=unnamed 。 为我完美的作品。

我遇到同样的问题,安装macvim仍然不能正常工作,终于find了解决的办法:

尝试先卸载所有vim,

brew uninstall macvim

brew uninstall --force vim

并重新安装macvim

brew install macvim --with-override-system-vim

那么你可以使用"*y或者"+y ,不必set clipboard=unnamed

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

原因:您的特定版本的vim编译时没有剪贴板支持。在控制台上键入vim –verion,您将看到-xterm_clipboard 。 用gui包安装vim解决了这个问题。 在Ubuntu上你可以通过在shell上input来实现:

sudo apt-get install vim-gui-common

现在再次在控制台上执行vim –version。 最有可能的是,你现在将会看到+ xterm_clipboard

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

Command-c适用于MacVim和terminal。