【问题标题】:Copying current Vim buffer into clipboard [duplicate]将当前 Vim 缓冲区复制到剪贴板 [重复]
【发布时间】:2014-01-21 13:25:17
【问题描述】:

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

:!cat %|pbcopy # 完美运行

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

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

【问题讨论】:

  • True 一定搜索得更好。

标签: vim leader


【解决方案1】:

逃离管道

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

还可以考虑使用 nnoremap 停止递归映射并以 &lt;CR&gt; 结束命令,以便命令自动运行。

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

您也可以考虑使用 shellescape,以防文件包含空格或其他异常字符

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

或者正如彼得·里克纳所说,只需使用

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

【讨论】:

  • 可以简化为:nnoremap &lt;leader&gt;c :w !pbcopy&lt;cr&gt;
  • 哇,效果很好! :) 谢谢!
  • 也许,我应该开始另一个问题;但如果它足够简单:是否有类似的解决方案将被拉出的行复制到剪贴板?
  • 当您想将 pbcopy 用于尚未保存的新文件时,您知道解决方案吗?当我进行快速格式化时,它对我很有用,否则我必须为此使用 sublime。
  • @Ismael pbcopy 根本不使用磁盘中的文件。 vim 将这些行直接写入标准输入。
【解决方案2】:

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

:nmap <leader>c :%y+

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

:help "+
:help :y

【讨论】:

  • OS X 的默认 /usr/bin/vim 不是使用 +clipboard 构建的。
  • 右:/usr/bin/vi/usr/bin/vim 是同一个文件。 (也就是说,一个是另一个的符号链接。)如果您使用该文件(通过任一名称),那么我的方法将不起作用。你是说可以用 +clipboard 编译 vim 但没有 GUI?可能是真的,我没试过。
猜你喜欢
  • 1970-01-01
  • 2013-04-13
  • 2018-09-12
  • 1970-01-01
  • 2011-09-27
  • 2011-04-27
  • 2017-09-10
  • 2018-05-10
  • 1970-01-01
相关资源
最近更新 更多