結論:Maccy は macOS のシステムクリップボードを監視しているため、iTerm2 でも Warp でもそのまま使えます。どちらのターミナルもシステムクリップボードに読み書きするからです。Maccy App をインストールしたら、検索モードを「正規表現」に切り替え、パスワードマネージャーを履歴の対象外にし、唯一の実質的なホットキー競合を解消しておきましょう。Maccy Mac のデフォルトである Shift+Cmd+C は、iTerm2 のコピーモードのショートカットと衝突します。ここさえ片付ければ、コピーしたコマンド、パス、ログの一行まで、検索・ピン留めできるローカル完結の履歴が手に入ります。

40分前に kubectl get pods -n staging を実行して、その後フラグを2回いじった。いま必要なのは2回目のバージョンなのに、その間に別のものを3つもコピーしてしまった。シェルの履歴にはコマンドは残っていますが、コピーした出力も、ブラウザから拾ったスタックトレースも、Finder から取ったパスも残っていません。

シェル履歴とクリップボード履歴のあいだにあるこの隙間を埋めるのが、クリップボードマネージャーの役目です。この記事では、Maccy Clipboard を iTerm2 や Warp と組み合わせるときの設定、重要なオプション、両者の機能が重なる部分と挙動が違う部分を解説します。

Maccy は iTerm2 や Warp で使える?

使えます。Maccy はメニューバーに常駐し、macOS のペーストボードを定期的にチェックするクリップボードマネージャーです。システムクリップボードにコピーするアプリなら、ターミナルも含めてすべて記録されます。ターミナル専用の連携機能を入れる必要はありません。pbcopy も同様で、パイプで渡した内容は、ほかのコピーと同じように Maccy の履歴に並びます。

シチュエーション Maccy に記録される? 備考
iTerm2 でテキストを選択して Cmd+C される 通常のペーストボード書き込み。
iTerm2 の「選択時にペーストボードへコピー」 される(ただしノイズ多め) 選択のたびに履歴が増えます。後述のヒントを参照。
echo "text" | pbcopy される スクリプトやエイリアスと相性が良い。
Warp でブロックの出力をコピー される Warp はシステムのペーストボードに書き込みます。
OSC 52 経由のリモート tmux/SSH クリップボード 条件次第 ターミナル側が OSC 52 によるクリップボード書き込みを許可している場合のみ。詳細は後述。
マウスモード有効の tmux 内で選択したテキスト 条件次第 システムクリップボードへ渡す設定をしないと、tmux 独自のバッファに留まることがあります。

セットアップ:5分で終わる手順

  1. インストール。GitHub のリポジトリからダウンロードするか、brew install maccy を実行します。
  2. 権限を許可する。最前面のアプリへ Maccy から直接ペーストさせたい場合、macOS のアクセシビリティ権限(システム設定 → プライバシーとセキュリティ → アクセシビリティ)が必要です。許可しない場合は、Maccy がアイテムをコピーするだけなので、Cmd+V で自分で貼り付けることになります。
  3. 検索モードを正規表現にする。Maccy の設定 → 一般で、検索モードをあいまい検索から正規表現に変更します。ターミナルでコピーするものは構造がはっきりしているので、正規表現にすればすぐに効果を実感できます。
  4. 「無視」タブを確認する。パスワードマネージャーなど、機密情報を扱うアプリを追加しておきます。
  5. ホットキーの競合を解消する。(次のセクションを参照)

誰も教えてくれないホットキー競合

Maccy のデフォルトのグローバルショートカットは Shift+Cmd+C です。iTerm2 では、同じ組み合わせがコピーモード(キーボードだけでテキストを選択する機能)の切り替えに割り当てられています。グローバルホットキーはシステムレベルで登録されるため、実際には Maccy が優先され、コピーモードが反応しなくなりがちです。Warp も Cmd+Shift 系の組み合わせにショートカットを割り当てているので、問題ないと決めつけず、設定 → キーボードショートカットで重複がないか確かめてください。

対処法は2つあります。

  • Maccy 側のショートカットを変える(たいていはこちらのほうが簡単)。Cmd+Shift+V や、ターミナルが使わない Option 系の組み合わせに変更する人が多いようです。Maccy の設定を開いて、新しいショートカットを登録します。
  • iTerm2 のコピーモードを割り当て直す。設定 → Keys → Key Bindings から変更できます。コピーモードを日常的に使っているならこちらです。

どちらかを選んだら、必ずターミナルにフォーカスした状態で動作を確認してください。Finder で動いたショートカットが、キー入力を積極的に奪うアプリでは別の挙動になることがあります。

機能一覧ではなく、実際のワークフローで見る

1. 3か所からコピーしたものでコマンドを組み立てる

ダッシュボードから Pod 名を、Slack から namespace を、ドキュメントからフラグをコピーしたとします。Maccy を開いて順番に選び、それぞれプロンプトに貼り付けるだけです。Maccy は新しい順に番号付きで並べてくれるので、3つ4つ前のアイテムに戻るのは、元のアプリまで行き来するのと違って、キーを1、2回押せば済みます。

2. 正規表現で履歴を絞り込む

正規表現モードをオンにすると、履歴をピンポイントで絞り込めます。例をいくつか挙げます。

探したいもの 入力例
コピーした git コマンドすべて ^git
絶対パスらしきもの ^/[\w./-]+
IPv4 アドレス \b\d{1,3}(\.\d{1,3}){3}\b
スタックトレースの行 Exception|Traceback|at .+\(.+:\d+\)
Docker イメージの指定 [\w.-]+/[\w.-]+:[\w.-]+

3. 何度も打ち直すものはピン留めする

Maccy ではアイテムをピン留めでき、ピン留めしたものは先頭に固定され、履歴のクリーンアップでも消えません。ターミナル作業でピン留めに向くのは、SSH の踏み台ホストの文字列、ボリュームマウントつきの長い docker run、ステージング環境の API ベース URL、フラグだらけの rsync コマンドなどです。頻繁に中身が変わるスニペットや、dotfiles にコミットしたくない値を含むものは、シェルのエイリアスよりピン留めのほうが手軽です。ピン留めのショートカットは、最近のバージョンでは Option+P です。

4. リッチテキストを引きずらずに貼り付ける

Web ページからコピーしたテキストには書式情報が付いてくることがあります。ターミナルはたいてい無視しますが、Warp の入力エディタや一部の TUI ツールでは、スマートクォートのような予期しない文字で挙動がおかしくなり、シェルコマンドが気づかないうちに壊れることがあります。Maccy には書式なしで貼り付けるアクション(Option+Shift+Return )があり、書式を取り除いてプレーンテキストだけを貼れます。ブログからコピーしたコマンドが「合っているように見えるのに」動かないときは、たいてい曲がった引用符(カーリークォート)が原因です。

iTerm2 と Warp:クリップボード運用で何が変わるか

iTerm2 Warp
標準のクリップボード履歴 あり。Paste History ウィンドウ(ディスクへの保存も設定可) システム全体を対象にした同等機能はないが、入力エディタとコマンド履歴である程度カバーできる
選択時コピー オプション設定。有効にすると Maccy が断片だらけになる オプション設定
複数行ペーストの安全性 警告を設定可能。Advanced Paste で送信前にテキストを調整できる 入力エディタで、実行前に複数行テキストを確認・編集できる
OSC 52(リモートクリップボード) 対応。設定で有効化が必要 最新のドキュメントを確認
Maccy との相性 アプリを横断した履歴は Maccy、iTerm2 自身のペースト履歴はターミナル内だけ Warp のエディタで、貼り付ける複数行スニペットを事前に確認しやすい

正直なところを書いておくと、ターミナル内でのコピーだけなら、iTerm2 標準の Paste History と Maccy は機能が重なります。iTerm2 の中だけで作業が完結する人なら、別のツールは要らないかもしれません。Maccy が真価を発揮するのは、ブラウザ、Slack、Finder、Xcode など、あらゆる場所からコピーしていて、ひとつの統一されたショートカットで呼び出したいときです。

セキュリティ:クリップボード履歴を「秘密情報のログ」にしない

ターミナルでの作業では、API トークン、.env の値、SSH 鍵、データベース URL など、機密性の高い文字列がクリップボードに乗ります。Maccy は履歴をローカルにだけ保存し、クラウド同期をしないので、プライバシー面では大きな利点です。ただし「ローカル」は「ディスク上にある」という意味でもあるので、意識的に管理しましょう。

  • パスワードマネージャーを無視リストに入れる。Maccy の「無視」設定に追加します。多くのパスワードマネージャーは、コミュニティ規約である nspasteboard.org の仕組みで、クリップボードへの書き込みを「秘匿(concealed)」とマークしており、クリップボードマネージャー側がそれを尊重できます。
  • トークンのパターンを正規表現で無視する。「無視」タブでパターン指定ができるなら、^(ghp_|sk-|AKIA)[A-Za-z0-9]+ のようなパターンを追加すれば、代表的なトークン形式を保存せずに済みます。
  • 機密性の高い作業のあとは履歴を消去する。Maccy には、そのためのクリア機能(メニューとキーボードショートカット)があります。
  • ターミナル自体を丸ごと無視リストに入れない。それでは本来の目的が果たせません。選択的に対処しましょう。

よくあるトラブルと対処法

症状 考えられる原因 対処法
履歴が断片だらけになる 「選択時コピー」がオンになっている ターミナルの設定でオフにする。または、ノイズは許容して検索で絞り込む
Maccy は開くが自動ペーストされない アクセシビリティ権限がない システム設定 → プライバシーとセキュリティで許可する
iTerm2 のコピーモードが効かなくなった ホットキーの競合 Maccy のショートカットを割り当て直す
貼り付けたコマンドが変な文字で失敗する コピー元のスマートクォートや隠れた書式 書式なしで貼り付ける
リモートの tmux でコピーしたものが Maccy に届かない tmux や SSH がシステムクリップボードへ転送していない tmux とターミナルの両方で OSC 52 を有効にする
大きなペーストでシェルがフリーズする Maccy は無関係。ボトルネックはターミナルかシェル iTerm2 の「ゆっくりペースト」オプションを使うか、ファイルに保存して source する

Maccy が向かない場面

Maccy が保存するのは、あくまでコピーしたものです。コマンドの意味は理解しませんし、変数を埋め込んでスニペットを実行することも、複数のマシン間で同期することもできません。パラメータ付きのコマンドテンプレートが必要なら、スニペットマネージャーやシェル関数のほうが向いています。2台の Mac でクリップボードを共有したいなら、Maccy のローカル完結という設計は意図的なトレードオフであって、不具合ではありません。コマンドの呼び出しに限れば、Ctrl+R の逆方向検索(あるいは fzf や atuin のようなツール)のほうが、どんなクリップボードマネージャーよりも優れています。両者は補完関係にあります。シェル履歴は実行したものを、Maccy はコピーしたものを覚えています。

まとめ

Maccy を入れて、ホットキーを Shift+Cmd+C から別の組み合わせに移し、検索を正規表現に切り替え、パスワードマネージャーを無視リストに入れ、何度も打ち直すスニペットをピン留めする。5分ほどの設定で、本当に「検索できる」クリップボードが手に入ります。さて、最初にピン留めするのはどれでしょう。あの踏み台ホストの文字列ですか、それとも50回は打ったあの docker run ですか?