課題:別のページからコピーしたものが、ターミナルをなぞった瞬間に消える
別のページからエラーメッセージをコピーして、AI に貼ろうとしています。
貼る前に、ターミナルに出ている前のエラーを読み返しました。どこを読んでいるか見失わないように、指でなぞるようにドラッグしながら読みます。
貼ります。さっきコピーしたエラーが入っていません。なぞった行が入っています。
これが「ドラッグした瞬間にコピーされる」設定の副作用です。
- クリップボードはパソコン全体で 1 つで、上書きされたものは戻りません
- しかも、上書きされたことは何も表示されません
- 気づくのは、貼ったときです
PuTTY や iTerm2 が昔からそうなっている挙動で、便利でもあります。ただし便利さと危険が同じ操作から出ているので、既定でどちらに倒すかの判断が要ります。
既存のやり方とそのコスト
全ターミナルで同じ挙動にする
iTerm2 や PuTTY では、設定を 1 つ入れれば全ターミナルで「ドラッグ即コピー」になります。慣れている人には便利です。
ただし、
- 「読むためのドラッグ」と「コピーのためのドラッグ」が指から区別できない
- クリップボード履歴ツールを使っていると、空白や重複でも履歴に積まれる
- そもそもブラウザのクリップボード API は
httpsとlocalhostでしか動かないので、http://IP:34567で開くと動く・動かないがばらつく
有効化は「知っている人が意図して入れる」ほうが事故が少ない設定です。
毎回キーボードでコピーする
Mac なら Cmd+C、Windows なら Ctrl+C を割り当ててコピーする運用です。
これは安全な方法ですが、ターミナルに Ctrl+C を割り当てると中断(^C)を失うという別の問題があります。MulmoTerminal の copy アクションは、選択があるときだけキーを横取りし、選択がなければシェルへ素通しするので、この副作用は起きません。
キー派は確実ですが、マウスで読みながらコピーしたい運用には向きません。
MulmoTerminal の解決:既定で OFF、有効にしても 2 つの例外は守る
MulmoTerminal の copyOnSelect は、書かない限り OFF です。
{
"copyOnSelect": true
}
書き場所は ~/.mulmoterminal/config.json、または設定画面の Terminal keys のチェックボックスから。設定画面からなら即座に効きます。ファイルに書いたときは、サーバを再起動してからタブを再読み込みします。このファイルはサーバを起動したときに一度だけ読まれ、ブラウザはページを開くタイミングでその値を受け取る仕組みです。
なぜ既定 OFF か。 読んでいて何気なくなぞっただけで、クリップボードの中身が入れ替わるからです。有効にする判断は、この挙動を知っている人だけがすればよい、という設計です。
詳細
有効にしても、2 つの場合はコピーしない
有効にしたあとも、意図的にコピーしない例外が 2 つあります。どちらもクリップボードを守るためです。
空白だけの選択。 ターミナルの空いている場所をドラッグすると、黙ってクリップボードが空白の並びに置き換わります。損しかないので、コピーしません。インデントを本当にコピーしたいときは、キーの copy を使います。
直前と同じ文字列。 同じ行を 2 回なぞると、OS のクリップボード履歴に同じものが 2 つ積まれます。履歴ツールを使っている人には実害があるので、同一ならコピーしません。
http:// で開いていると、ブラウザが止める
ここが一番引っかかるところです。そしてアプリ側では直せません。
ブラウザのクリップボード API は、https と localhost でしか動きません。http://192.168.1.10:34567 のように IP アドレスで開いていると、ページがクリップボードに触れません。これはブラウザの安全上の決まりなので、設定では変わりません。
まったく動かないわけではなく、MulmoTerminal はキーボードショートカットと同じ経路(xterm 自身にコピーさせる)へフォールバックします。そちらは動きますが、ターミナルがキーボードフォーカスを持っている必要があります。
結果として、
- ターミナルをクリックしてからドラッグすれば動く
- 別の場所から来てそのままドラッグすると動かない
「たまに効く、たまに効かない」という症状の正体はこれです。同じパソコンで見ているなら、http://localhost:34567 で開くのが答えになります。localhost は http でも例外として扱われます。別のパソコンから見るなら、この制限は受け入れることになります。
同じ制限は、他のコピー機能にも効く
覚えておくと切り分けが速くなります。http://IP で開いていると、コピーに関わる機能は全般に弱くなります。
「コピーできるはずなのにできない」に出会ったら、まずアドレス欄を見るのが最短の切り分けです。
キーの copy と併用できる
copyOnSelect を有効にしても、キーの copy 割り当てはそのまま残して構いません。キーボードで選択してコピーしたい場面もあるので、両方使えます。
copy のキーバインドは選択があるときだけ動き、選択がなければキーはそのままシェルへ届きます。これにより Ctrl+C を割り当てても中断(^C)を失わない設計です。
使ってみる
MulmoTerminal を立ち上げて、設定画面の Terminal keys を開きます。copyOnSelect のチェックボックスを入れます。即座に効きます。
ファイルに書いて永続化する場合は ~/.mulmoterminal/config.json に { "copyOnSelect": true } を加え、アプリ再起動 → タブ再読み込みです。
動作確認: ターミナルの出力をドラッグして離し、別のアプリに貼ってみて、なぞった文字列が入っていれば成功です。
効かないときは、ブラウザのアドレス欄を見ます。http://192.168... のような IP になっていれば、それがブラウザ側の制限です。http://localhost:34567 で開き直すと動きます。
やめるときはチェックを外す、または false に戻します。キーの copy 割り当ては、そのまま残して構いません。
まとめ
- クリップボードは 1 つしかなく、上書きされたことは貼るまで分からない
- 「読むためのドラッグ」と「コピーのためのドラッグ」は指で区別できないので、既定で OFF にしておくほうが事故が少ない
- MulmoTerminal は有効にしても「空白だけの選択」と「直前と同じ文字列」はコピーしない
http://IPで開いているとブラウザ API がブロックされ、たまに効く・たまに効かないの症状になる。同じマシンならhttp://localhost:34567で開く- キーの
copyと併用できる。ターミナルの中断(^C)を失わない設計
関連: MulmoTerminal 公式ガイドの設定ページ(copy-on-select) / MulmoTerminal の unknown keys — 設定ファイルの知らない項目を消さない / Cursor の代替としての MulmoTerminal


