我正在尝试将Vim的缓冲区复制到剪贴板,我执行了以下操作:
:!cat %|pbcopy
#完美无缺
然后我尝试用领导键映射它(这是我第一次尝试映射某些东西,所以请原谅我是否发现了一些愚蠢的东西。)
:map <leader>c :!cat %|pbcopy
#这不起作用; vim抱怨:不是编辑命令
答案 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