1

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

:!cat %|pbcopy# 完美运行

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

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

4

2 回答 2

3

逃离管道

: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>
于 2014-01-03T19:15:36.787 回答
1

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

:nmap <leader>c :%y+

(我永远不记得"+"*寄存器之间的区别。)OTOH,如果您在 Mac 上使用不支持 GUI 的 vim 版本,例如/usr/bin/vi.

:help "+
:help :y
于 2014-01-03T20:58:00.260 回答