os x 下 vim 无法复制到系统剪切板的问题

2014-01-09 15:07:53 +08:00
 guoqiao
我习惯直接在 Terminal 中使用 vim, 而不是 macvim.

经常需要将 vim 中的内容复制到网页或其他文本中.
但是, 无论是

"+y

还是

"*y

都无法将选中的内容复制到系统剪切板.

我在 vim 的配置文件中设置了

set clipboard=unnamed

我的电脑是Macbook Air 2013, 系统是 os x mavericks 10.9.1
同样的配置, macvim 毫无问题.
23252 次点击
所在节点    程序员
30 条回复
xingxiucun
2014-01-09 15:19:14 +08:00
vim --version | grep clip

没有的话拿源码编 指定支持X什么的就可以
guoqiao
2014-01-09 15:28:46 +08:00
@xingxiucun 貌似确实没有. 但是, 除了自己编译, 没有解决办法么?
vim --version | grep clip
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
-xterm_clipboard -xterm_save
spark
2014-01-09 15:29:48 +08:00
没遇到这问题, 我每次装新机都是这么操作的:
$ brew install macvim --override-system-vim
xingxiucun
2014-01-09 15:36:33 +08:00
@guoqiao gvim 。。。 木有用过os x 不知道有木有别的办法
spritevan
2014-01-09 15:40:16 +08:00
1. terminal 里面按住 option 选好文字用 cmd+c 复制
2. `:w !pbcopy` #把**全文**发给剪切板
3. `:.w !pbcopy` #把**当前行**发给剪切板
4. 选中多行后 `:!tee >(pbcopy)` #把**选中行**发给剪切板
zhufenggood
2014-01-09 15:56:02 +08:00
alias vim="/Applications/MacVim.app/Contents/MacOS/Vim"
dalang
2014-01-09 16:27:52 +08:00
add the following codes to your .vimrc

map "+y :w !pbcopy<CR><CR>
map "+p :r !pbpaste<CR><CR>

" ctrl-x for cut
vmap <C-x> :!pbcopy<cr>
" ctrl-c for copy
vmap <C-c> :w !pbcopy<cr><cr>
" ctrl-v for paste
"nmap <C-v> :set paste<CR>:r !pbpaste<CR>:set nopaste<CR>
imap <C-v> <Esc>:set paste<CR>:r !pbpaste<CR>:set nopaste<CR>


** use ctrl-c ctrl-v when copy to clipboard in vim. **
likuku
2014-01-09 17:00:14 +08:00
尝试 ~/.vimrc 里加一行 set mouse=v 呢?
guoqiao
2014-01-09 19:47:56 +08:00
@xingxiucun
@spark
@zhufenggood
谢谢你们的答案, 我知道很多人会说用 gvim 或 macvim 取代 vim. 不过我不喜欢同时开太多工具. 对于做 web 开发的人来说, terminal 和浏览器是必定要开的. 在 terminal 中使用 vim, 只需要切换标签页. 而如果又开一个 macvim, 切换的成本太高了. 况且, ssh 操作服务器的时候, 只能用 vim, 本地也用 vim, 可以保持工作环境的一致性. 好吧, 也许是我强迫症.
guoqiao
2014-01-09 19:48:56 +08:00
@spritevan
@dalang 好的,回头试试这个 pbcopy 的配置.
Esay
2014-01-09 19:49:49 +08:00
@guoqiao 额 6楼的方法也没开 Macvim 啊 你也不试试zai shuo
guoqiao
2014-01-09 20:10:54 +08:00
@Esay 之前有点疑惑,他这个意思, 是使用 macvim 里带的 vim 取代系统的 vim 是吗? 我试了下, 还是复制不出来. "+y "*y 都不行
silverymoon
2014-01-09 20:48:43 +08:00
我也是和楼主一样的习惯,已经解决了。。。
用homebrew,brew install vim,安装的vim是编译开关打开的,之后自己找到安装的目录alias一下就好了。。。
mac不在身边,忘了brew的默认目录是啥了。。。
Esay
2014-01-09 20:55:22 +08:00
@guoqiao
- 你先确定 which vim 确定一下用的哪个 vim
- 然后 vimrc 里是否加了 set clipboard=unnamed
在我这里完全好用,不太懂你这是怎么复制的,我一般v+上下左右+y
likuku
2014-01-09 23:18:21 +08:00
@Esay 我刚在macosx lione 10.7.5 下测了,

给 ~/.vimrc 里增加 set clipboard=unnamed 之后,开系统自带终端,打开 vim,yy 复制一行,

切换到 Chrome 的 URL/Search 框里 CMD+V 就把 vim 里 yy 复制的内容贴上了。
likuku
2014-01-09 23:19:36 +08:00
补充,我 用的 vim 是 macosx 自带的。
angelface
2014-01-09 23:43:45 +08:00
只能重新编译,或是装个macvim,不用想其它办法了,默认的7.3,下个7.4编译一下吧,3分钟都用不上。
silverymoon
2014-01-10 01:24:05 +08:00
@angelface brew里面有7.4的,用起来还好。
FrankFang128
2014-01-10 01:36:45 +08:00
VIM的硬伤
guoqiao
2014-01-10 04:06:37 +08:00
@zhufenggood 用你的方法解决了, 多谢!
在 .profile 里加了 alias . 系统自带的 vim 是 7.3, macvim 带的 vim 是7.4的.
现在 vim --version | grep clip 的结果是:
+clipboard +iconv +path_extra +transparency
+eval +mouse_dec +startuptime -xterm_clipboard
并且 yy 后,可以直接复制到其它地方了!
我昨天在 Terminal 中新建了一个 tab 来尝试, 发现没成功. 今天唤醒休眠的电脑, 又新建个标签页试了下, 居然成功了. 我的 Terminal 程序以及电脑一直没有重启过, 搞不懂为何之前没成功.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/96300

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX