我正在尝试将 Vim 的缓冲区复制到剪贴板,我执行了以下操作:
:!cat %|pbcopy
# 完美运行
然后我尝试用领导键映射它(这是我第一次尝试映射某些东西,所以如果发现一些愚蠢的东西,请原谅)。
:map <leader>c :!cat %|pbcopy
# 这不行;vim 抱怨:不是编辑器命令
逃离管道
:map <leader>c :!cat %\|pbcopy
还可以考虑使用 nnoremap 停止递归映射并结束命令,<CR>
以便命令自动运行。
nnoremap <leader>c :!cat %\|pbcopy<CR>
您也可以考虑使用 shellescape 以防文件包含空格或其他不寻常的字符
nnoremap <leader>c :exec '!cat '.shellescape('%').'\|pbcopy'<CR>
或者正如彼得里克纳所说,只需使用
nnoremap <leader>c :w !pbcopy<cr>
这适用于任何系统,而不仅仅是 Mac:
:nmap <leader>c :%y+
(我永远不记得"+
和"*
寄存器之间的区别。)OTOH,如果您在 Mac 上使用不支持 GUI 的 vim 版本,例如/usr/bin/vi
.
:help "+
:help :y