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支持,一定留言告诉我哈。 :)

13 Comments

  1. Godrej Ananda
    Godrej Ananda January 6, 2023

    Godrej Ananda And Hi-existence Ventures are constructed completely round evolving purchaser necessities and satisfaction. Therefore, our short to our crew could be very simple – clients anticipate not anything however the best. Starting thus, from the identity of properties, to design, to creation and after-income service, we make no compromises.

    Our devoted professionals (which consist of innovative architects and designers, making plans and technical specialists, creation experts, income and advertising and marketing professionals, and purchaser care executives) deliver this imaginative and prescient to existence via way of means of growing superbly designed homes, typified via way of means of traditional structure and modern inner and outside layouts.

  2. Godrej Ananda
    Godrej Ananda December 27, 2022

    Godrej Ananda debuted in a development planned over 28 years ago (1994) with signature layouts such as Rainbow Drive, Lake Shore Homes and Ferns Paradise. These floor plans have more clearly defined what real estate should be for Bangalore people. Our promoter Austin Roach became known as the catalyst for the formation and development of Greater Bangalore.

  3. nextvary
    nextvary August 3, 2020

    👍

  4. Klusfq
    Klusfq June 6, 2020

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

  5. yisangwu
    yisangwu June 4, 2020

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

  6. Jack
    Jack June 3, 2020

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

  7. 害
    May 22, 2020

    option+触摸板选择 方便多了

  8. 桃子
    桃子 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

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

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

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

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.