52
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iTerm2のクリップボードインテグレーション(OSC 52/PASTE64)のつかいかた

Last updated at Posted at 2012-12-26

=============================================================

OSC52(PASTE64)のwrite accessが有効になったiTerm2のビルドが出たので、iTerm2での具体的な使用方法をご紹介します。現状では主にtmuxユーザーに恩恵があります。

OSC52/PASTE64はxterm由来の機能で、端末エミュレータからクリップボードを操作するためのものです。

OSC52に関しては、すでに去年のターミナルマルチプレクサアドベントカレンダーで@ttdodaさんが言及していますので、興味ある方はこちらもご覽ください。

リモートの tmux でコピーした内容のローカルのクリップボードへの反映

設定方法

先日のビルドで加わったグローバル設定、"Allow clipboard access to terminal apps"にチェックを入れます。
これだけです。

osc52

tmuxを立ち上げて、コピーモードでtmuxのコピーバッファに何かコピーしてみましょう。

どういうこと?

tmuxはこんな感じのシーケンスを端末に送っています。

$ printf "\033]52;;%s\033\\" `printf Hello|base64`

これでMacのペーストボードに"Hello"という文字列が入ると思います。
Emacsではsend-string-to-terminalを使ってわりと簡単に連携できそうですね。

実は以前のiTerm2でもOSC50/CopyToClipboardというシーケンスで同じことができたのですが、これは完全に独自拡張で追従する実装がありませんでした。(今でも"Allow clipboard access to terminal apps"の設定が有効なら以前と同様に使えます)

read accessに対応する端末では

$ printf '\033]52;;?\033\\'

とするとクリップボードの内容が読み出せるのですが、iTerm2ではセキュリティの問題などを勘案し、時期早尚と判断されたため実装は見送られました。

注意点

OSC 52にはセキュリティ上の懸念があることには留意しておくべきです。
@ttdodaさんの記事でも言及されていますが、セキュリティコンテキストの異なるサーバーへSSHする時などは、影響を考えて賢く使いましょう。

プロファイルごとに有効・無効を切り換えられないの?

できません。
iTerm2はOSC50/SetProfileという端末シーケンスを使って動的にプロファイルを切り換えられるので、プロファイルごとにセキュリティ設定を切り換えるという発想は現状では厳しいです。

Terminal.appでも使いたい

Terminal.appの端末エミュレーションを強化する、mouseterm-plusを使う、という方法があります。
他のOSでも使いたい場合、write accessだけの利用であればxterm、TeraTerm、RLogin、mltermなどの選択肢があります。
端末とクリップボードの連携ソリューションには様々なものがありますが、選択肢のひとつとして検討してみてください。

52
53
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?