Vim:将选择复制到OS X剪贴板

ʞɔı*_*ɔıu 221 macos vim clipboard

假设你在vim中选择了一个区域.如何将其复制到OS X剪贴板中?

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

Geo*_*lly 237

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

set clipboard=unnamed
Run Code Online (Sandbox Code Playgroud)

现在所有的操作,如yy,, DP剪贴板一起工作.不需要用"*或者加上前缀"+.

  • 这也适用于最近7.3+版本的vim(shell). (24认同)
  • 正如@VincentG在上面的评论中提到的,这确实适用于基于终端的Vim版本,但在终端中使用tmux的那些将需要遵循这里详述的解决方案之一:http://stackoverflow.com/a/11421329/456584 (3认同)
  • 这应该是公认的答案 - 只要`:echo has("clipboard")`````,这就是MacVim的情况,我有一个`vi`别名,运行`mvim -v`代替 (3认同)
  • 我整个上午花了很多时间来弄清楚如何从⌘-C和⌘-V中分离出y,d和P命令,MacVim为你启用了这些命令,并最终遇到了这个问题.果然,当我还是一个vim少年时,我把它添加到了我的vimrc中,从那以后它一直让我感到沮丧. (2认同)
  • 对于MacVim的新用户,它可以从终端使用`-v`标志(`mvim -v`).我有别名的vim和mvim. (2认同)

ram*_*ion 134

如果启用了剪贴板,则可以通过点击将所选区域复制到剪贴板 "*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
...

如果已编译+clipboard,我将能够使用该"*寄存器访问系统剪贴板.

我下载了7.2源代码并编译它(简单tar xjf vim-7.2.tar.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
...

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

  • 比通常很长的功能列表中搜索"剪贴板"这个词要容易一些:做`:echo has("clipboard")`.如果它显示为0,则表示未编译.如果显示为1,则为. (9认同)
  • 谨防!我有一个`+ clipboard`版本,但安装了`--with-client-server`,启用`+ x11`,并尝试在macOS上的终端vim中复制/粘贴到x11不起作用:)我不得不没有`+ clientserver`重新安装. (4认同)
  • 我用+剪贴板编译了最新版本,现在本机剪贴板使用它作为*寄存器.此外,在.vimrc文件中设置"set clipboard = unnamed"会使系统剪贴板成为典型的剪贴板.我实际上使用http://github.com/adamv/homebrew/blob/duplicates/Library/Formula/vim.rb这个自制公式来构建和编译它. (3认同)
  • 你也可以使用自制软件使用剪贴板编译vim:`brew install vim` (3认同)

use*_*065 94

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

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

vmap <C-x> :!pbcopy<CR>  
vmap <C-c> :w !pbcopy<CR><CR> 
Run Code Online (Sandbox Code Playgroud)

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

  • 您还可以从命令行中选择文本,例如:1,10w!pbcopy将第1-10行复制到剪贴板.w与其后的空间很重要,以保持原始文本的位置.上面的源链接现在已经破了,但这里有一个讨论:http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing (6认同)
  • 请注意,这似乎只适用于选择整行.如果您只想选择一行的一部分,它似乎不起作用.http://stackoverflow.com/questions/16196826/how-to-filter-visual-selection (2认同)

Chr*_*Lee 77

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

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

  • 对于没有+剪贴板编译VIM的人来说,上面的链接是一个很好的资源,可以提供无需重新编译VIM的解决方法 (5认同)
  • +仅适用于X11? (2认同)

Pau*_*lin 36

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

  • 只是似乎发出一个铃铛字符,对我来说没有其他影响 (11认同)
  • 在X11中,Vim的"*是PRIMARY",+是CLIPBOARD,而SECONDARY没有得到命名寄存器.(不是说有人用它......) (3认同)

nik*_*ola 24

在macos 10.8上,vim被编译-clipboard为使用"*y你需要重新编译.幸运的是brew install vim,您可以轻松地为您编译新版本+clipboard.


Jam*_*ven 17

从视觉上选择文本并键入:

ggVG
!tee >(pbcopy)
Run Code Online (Sandbox Code Playgroud)

我觉得比以下更好:

ggVG
:w !pbcopy
Run Code Online (Sandbox Code Playgroud)

由于它没有闪烁提示:"按ENTER或键入命令继续"


Mat*_*hes 11

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

port install vim + x + x11

现在,您使用"+ register将文本直接拖到Mac剪贴板上.就像魅力一样.


Jos*_*ban 8

如果您使用的是MacOS X:

$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]
Run Code Online (Sandbox Code Playgroud)

然后,添加到.vimrc:

set clipboard=unnamed
Run Code Online (Sandbox Code Playgroud)

现在你只需要进入vim:%y可以将所有内容复制到剪贴板中.


son*_*ngz 5

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

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
Run Code Online (Sandbox Code Playgroud)

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


Eva*_*van 5

使用自制软件的 vim:brew install vim

Mac(自10.10.3 Yosemite起)预装了clipboard启用该标志的系统vim 。

您可以自己编译vim并启用该标志,也可以使用正确设置的Homebrew 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 ...
Run Code Online (Sandbox Code Playgroud)

注意 -clipboard

有了自制软件,您反而会得到

$ /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 ...
Run Code Online (Sandbox Code Playgroud)

注意 +clipboard