【发布时间】:2014-01-21 13:25:17
【问题描述】:
我正在尝试将 Vim 的缓冲区复制到剪贴板并执行以下操作:
:!cat %|pbcopy # 完美运行
然后我尝试用领导键映射它(这是我第一次尝试映射一些东西,所以如果发现一些愚蠢的东西,请原谅)。
:map <leader>c :!cat %|pbcopy # 这不行; vim 抱怨:不是编辑器命令
【问题讨论】:
-
True 一定搜索得更好。
我正在尝试将 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>
【讨论】:
nnoremap <leader>c :w !pbcopy<cr>
这适用于任何系统,而不仅仅是 Mac:
:nmap <leader>c :%y+
(我永远记不起"+ 和"* 寄存器之间的区别。) OTOH,如果您在Mac 上使用不支持GUI 的vim 版本,例如@ 987654324@.
:help "+
:help :y
【讨论】:
/usr/bin/vim 不是使用 +clipboard 构建的。
/usr/bin/vi 和 /usr/bin/vim 是同一个文件。 (也就是说,一个是另一个的符号链接。)如果您使用该文件(通过任一名称),那么我的方法将不起作用。你是说可以用 +clipboard 编译 vim 但没有 GUI?可能是真的,我没试过。