Press "Enter" to skip to content

使用OSC52实现iTerm2远程pbcopy

最高效的码字方式,一定有一个特点,那就是手指离开键盘的次数尽可能的少。 并且手指码字的时候的在键盘的跨度尽可能的短, 这也是我认识不少老牌程序员用Vim也不用ESC, 而是使用ctrl+[, 甚至还有这:

从而避免手指在键盘上的跨越幅度太大。

我一直用MacBook做工作用机,也一直用iTerm2来登陆远程服务器开发,因为PHP是一个比较巨大的工程,编译速度很慢,自己的笔记本再高配,也是做不到make -j不卡死的。

言归正传, 在mac上有一个很有用的命令pbcopy, 它能让我们避免去使用鼠标选择文本,复制到剪贴板。从而让我们的双手可以一直在键盘上,但很可惜的是,pbcopy只能在本机使用,而我大量的时间都是使用远程机。

最近发现了一个很有趣的OSC 52,也就是ANSI escape code中的 ESC ] (Operating System Command), 中的52, 它提供了访问访问本地剪贴板的能力。

它的形式为:

echo -e "\e]52;c;$(base64 <<< php)\a"

也就是,以\e]52;c;开头,然后是base64 encode后的内容,以\a结尾, 如果terminal支持,那么上面例子中的文字“php”就会进入到你的剪贴板了,你就可以使用command + V粘贴了。

对于我常用的iTerm2来说, 只要打开这个选项即可:

有了这个,那么我们就可以很容写出一个支持远程服务器的pbcopy了, 以PHP为例(
你也可以直接下载:OSC52.php):

#!/bin/env php
<?php
$data = trim(file_get_contents("php://stdin"));
echo "\033]52;c;", base64_encode($data), "\007";

然后给这个文件增加执行权限, 重命名成pbcopy,试试:

echo "osc52 codes" | ./pbcopy

然后command+v粘贴下试试?

这下就香很多了,避免了需要用鼠标来选择复制一些text。 让手可以一直在键盘上,极大提升生产力!
然而,我现在开始用iPad办公了, 目前为止还没有发现iPad下的terminal App有支持OSC 52的。 大家要是发现哪个App支持,一定留言告诉我哈。 :)

11 Comments

  1. nextvary
    nextvary August 3, 2020

    👍

  2. Klusfq
    Klusfq June 6, 2020

    哈哈pbcopy和pbpaste确实好用,牛逼

  3. yisangwu
    yisangwu June 4, 2020

    laruence,
    博客里面的图片,能不能 在新窗口打开? a target=”_blank”。
    点开图片,还要回退。

  4. Jack
    Jack June 3, 2020

    我就想说一下 我还是会回来查资料的。

  5. 害
    May 22, 2020

    option+触摸板选择 方便多了

  6. 桃子
    桃子 May 22, 2020

    我实测失败,是不是不够通用?
    确定已打开:

    • 桃子
      桃子 May 22, 2020

      噢,我错了。我在远程的tmux里面测试的,失败了。直接在 shell 里面是成功的。我再研究一下。

      • laruence
        laruence May 22, 2020

        如果是tmux,你可以直接下载我的那个例子,那个里面我做了兼容

        • 桃子
          桃子 May 22, 2020

          多谢,用的例子成功了,兼容真是个麻烦事。
          PHP在容器里面,宿主机不能用,所以写了个 bash:
          #!/bin/bash

          set -euo pipefail

          t=$(cat <&0 | base64)
          if [ ! -z ${STY+x} ]; then
          echo -ne "\eP\e]52;c;$t\a\e\\"
          elif [ ! -z ${TMUX+x} ]; then
          echo -ne "\ePtmux;\e\e]52;c;$t\a\e\\"
          else
          echo -ne "\e]52;c;$t\a"
          fi

          不知道贴代码会不会格式错乱。。

  7. 刘师傅
    刘师傅 May 22, 2020

    巧了,今天在看一个老知识点的参考资料时,旁边就是鸟哥的网站链接,所以,无论十万百千里,互联网就是这么神奇,我来了!
    没啥说的,只是占个楼主而已。
    当然,我可以试试鸟哥的OSC 52

Leave a Reply to Klusfq Cancel reply

Your email address will not be published. Required fields are marked *