230

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

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

4

28 回答 28

255

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

set clipboard=unnamed

现在,所有操作,如yyD和 ,P都可以使用剪贴板。无需在它们前面加上"*or "+

于 2009-03-25T04:57:00.690 回答
139

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

要查看它是否已启用,请运行vim --version并查找+clipboardor -clipboard。例如,在我的 10.5.6 机器上默认情况下未启用它:

% 哪个 vim
/usr/bin/vim
% vim --版本
VIM - Vi IMproved 7.2(2008 年 8 月 9 日,2008 年 11 月 11 日 17:20:43 编译)
包含的补丁:1-22
_www@b77.apple.com 编译
没有图形用户界面的普通版。  包含 (+) 或不包含 (-) 的功能:
... 
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
 ...

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

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

% 哪个 vim
/usr/local/bin/vim
% vim --版本
VIM - Vi IMproved 7.2(2008 年 8 月 9 日,2009 年 3 月 24 日 17:31:52 编译)
由 rampion@Myrrhy.local 编译
带有 GTK2 GUI 的普通版本。  包含 (+) 或不包含 (-) 的功能:
... 
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
 ...

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

于 2009-03-24T21:55:14.387 回答
98

您可以直观地选择文本和类型:w !pbcopy<CR>

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

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

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

于 2012-02-25T23:19:13.040 回答
83

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

Mac OS X 剪贴板共享”可能也有一些对你有用的想法。

于 2009-03-24T15:45:45.490 回答
42

"*任何 yank 命令之前的双引号星号 ( ) 会将结果拉入复制缓冲区。这也适用于 Windows 和 Linux。

于 2009-03-24T15:44:03.310 回答
27

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

于 2013-08-31T23:32:03.197 回答
17

直观地选择文本并键入:

ggVG
!tee >(pbcopy)

我觉得比:

ggVG
:w !pbcopy

由于它不会出现提示:“按 ENTER 或键入命令继续”

于 2013-06-15T17:56:51.157 回答
12

就我而言,我只需要这样做:

:set mouse=v

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

于 2016-09-21T21:53:10.007 回答
11

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

port install vim +x +x11

现在您使用"+寄存器将文本直接拉到您的 Mac 剪贴板。奇迹般有效。

于 2010-02-06T00:21:16.333 回答
9

如果您使用的是 MacOS X:

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

然后,添加到您的 .vimrc:

set clipboard=unnamed

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

于 2015-06-09T15:29:48.713 回答
5

如果你的 Vim 没有用剪贴板编译,你希望复制选定的文本而不是整行,你不想安装 MacVim 或其他 GUI,最简单的解决方案是将此行添加到你的 .vimrc:

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

要使用它,只需直观地选择要复制的文本,然后Control- C。如果您想了解此行的完整说明,请阅读“如何在 vim 上复制到剪贴板”。

于 2014-01-09T21:44:56.543 回答
5

使用Homebrew 的vim:brew install vim

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

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

要亲自查看,请查看库存系统 vim/usr/bin/vim --version

你会看到类似的东西:

$ /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

使用 homebrew 的 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

于 2015-05-10T21:19:12.273 回答
4

我用了:

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

它工作得非常好。

于 2015-06-03T06:25:38.233 回答
3

当您在 Mac 上时,您可以使用MacVim使用标准 OS 键轻松访问剪贴板。

它也完全向后兼容普通的 Vim,所以我什至不需要单独的.vimrc.

于 2009-03-24T15:58:19.923 回答
2

命令-C?这至少适用于从 Terminal.app 内启动的 vim,用于使用鼠标选择的文本。

于 2009-03-24T15:45:23.837 回答
2

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

于 2009-05-25T20:08:08.853 回答
2

我的主要问题是 Vim 的默认 OSX 版本。+clipboard通过添加到构建中的自制软件安装它。

您可以通过以下方式检查:

vim --version

看看它是否说-clipboard+clipboard

于 2015-05-09T19:25:57.577 回答
2

如果您+clipboard在 Vim 安装中有选项(您可以使用 进行检查:version)并且您处于可视模式,您可以这样做"+y这会将选择拉到+剪贴板的缓冲区。

我已将以下地图添加到我的 vimrc 中,它工作正常。

vmap <leader>y "+y :有了这个,我可以在可视模式leader keyy复制到剪贴板。

nmap <leader>p "+p :有了这个,我可以在正常模式下从剪贴板粘贴leader keyp

PD:在 Ubuntu 上,我必须安装 vim-gtk 才能获得该+clipboard选项。

于 2015-10-26T04:23:26.473 回答
0

我目前在 OS X 10.9 上,我用+xterm_clipboard编译 vim 的努力没有给我带来任何结果。所以我目前的解决方案是在终端模式下使用 MacVim,set clipboard=unnamed并在我的 ~/.vimrc 文件中添加选项。非常适合我。

于 2014-06-06T12:13:59.053 回答
0

什么对我有用.vimrc

set clipboard=unnamed
if has("unnamedplus") " X11 support
    set clipboard+=unnamedplus
endif
于 2018-06-02T23:58:48.813 回答
0

对于 Mac - 按住option键,然后ctrl V选择文本就可以了。

于 2019-02-10T17:54:45.303 回答
0

Shift cmd c – 设置复制模式 拖动鼠标,选择文本, cmd c 复制选定文本 Cmd v 粘贴

于 2019-07-19T08:31:59.853 回答
0

使用映射的最佳方式。

例如:

nnoremap C "+y
vnoremap C "+y
nnoremap cC ^"+y$

这会将大写 C 映射到剪贴板,而不更改任何内容。适用于任何 vim。

于 2021-10-27T20:44:29.780 回答
-1

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

于 2009-05-25T19:12:12.927 回答
-1

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

原因:您的特定版本的 vim 是在不支持剪贴板的情况下编译的。在控制台上键入 vim --verion ,您将看到-xterm_clipboard。使用 gui 包安装 vim 解决了这个问题。在 ubuntu 上,您可以通过在 shell 上键入来执行此操作:

sudo apt-get install vim-gui-common

现在再次在控制台上执行 vim --version 。很可能,您现在会看到+xterm_clipboard

因此,现在您可以使用寄存器 + 将任何内容复制到剪贴板(例如“+yy 将当前行复制到剪贴板)

于 2013-08-13T19:36:49.903 回答
-1

在 Mac 上,当其他任何东西似乎都起作用时 - 用鼠标选择,右键单击选择副本。呜呜

于 2014-01-03T07:08:07.133 回答
-1

我遇到了同样的问题,安装后macvim仍然无法正常工作,最后我找到了解决方法:

尝试先卸载所有vim,

brew uninstall macvim

brew uninstall --force vim

并重新安装 macvim

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

然后你可以使用"*yor "+y,不必set clipboard=unnamed

于 2017-08-24T02:40:20.100 回答
-2

Command-c 在 MacVim 和终端中都适用于我。

于 2010-08-12T16:22:25.137 回答