将当前Vim缓冲区复制到剪贴板

时间:2014-01-03 19:13:18

标签: vim leader

我正在尝试将Vim的缓冲区复制到剪贴板,我执行了以下操作:

:!cat %|pbcopy#完美无缺

然后我尝试用领导键映射它(这是我第一次尝试映射某些东西,所以请原谅我是否发现了一些愚蠢的东西。)

:map <leader>c :!cat %|pbcopy#这不起作用; vim抱怨:不是编辑命令

2 个答案:

答案 0 :(得分:2)

逃离管道

:map <leader>c :!cat %\|pbcopy

还可以考虑使用nnoremap来停止递归映射并使用<CR>结束命令,以便命令自动运行。

nnoremap <leader>c :!cat %\|pbcopy<CR>

您也可以考虑使用shellescape,只要文件包含空格或其他不寻常的字符

nnoremap <leader>c :exec '!cat '.shellescape('%').'\|pbcopy'<CR>

或正如Peter Rickner所说,只需使用

nnoremap <leader>c :w !pbcopy<cr>

答案 1 :(得分:1)

这适用于任何系统,而不仅仅是Mac:

:nmap <leader>c :%y+

(我永远不会记得"+"*寄存器之间的区别。)OTOH,如果你在Mac上使用没有GUI支持的vim版本,你的方法将会起作用,例如/usr/bin/vi

:help "+
:help :y