Claude Codeのプロンプト誤送信をなくしたい
「うわ、まだ入力途中なのにプロンプト送信しちゃった...」
あるあるですよね。
そんな日頃の小さな不幸を解決すべく、Zedの内蔵ターミナルで、普段どおりの Claude Code CLI を次の操作にできました。
| キー | 動作 |
|---|---|
Enter |
改行だけ。まだ送信しない |
⌘ Enter |
プロンプトをClaude Codeへ送信 |
⌃ ⌘ I |
Claude Code CLIを起動 |
⌘ ⌥ P |
ローカル/SSH先のPDFを開く |
設定一式はGitHubで公開しました。
git clone https://github.com/amu815/zed-claude-code-cli-kit.git
cd zed-claude-code-cli-kit
./install.sh
そもそも「Zed」って何?
Zedは、Rustでゼロから開発されているオープンソースのコードエディタです。複数のCPUコアやGPUを活用する設計で、動作の軽快さを重視しています。
ざっくり言えば、VS CodeやCursorと同じように、ソースコードの編集、内蔵ターミナル、Git操作、拡張機能などをまとめて扱える開発アプリです。共同編集機能やAI機能も標準で備えています。
ただし、この記事ではZed内蔵のAI機能を使うわけではありません。それぞれの役割は次のとおりです。
| 要素 | この記事での役割 |
|---|---|
| Zed | コード編集、内蔵ターミナル、キー入力の変換、SSHプロジェクトの操作 |
| Claude Code CLI | ターミナル上でプロンプトを受け取り、コードを調査・編集するAIエージェント |
| 本記事の設定キット | ZedとClaude Code CLIを使いやすくつなぐキーバインドやTask |
つまり、Zedを「軽快なエディタ兼ターミナル」として使い、その中で普段どおり claude コマンドを動かす構成です。
Zed自身にもAgent Panelや、外部エージェントを接続するACPがありますが、今回の設定ではそれらへの移行は必要ありません。
この記事では、なぜこの設定が安定するのか、Zedを初めて使う人向けの初期設定、そしてZedがまだ苦手なPDFをSSH環境でも読む方法まで説明します。
なぜこの環境を作ったか
以前はVS CodeのターミナルでClaude Code CLIを使い、
Enterは改行、Command+Enterで送信
を実現しようとしていました。しかし、Claude Code側のキーバインドを変更すると、端末や別のMacへ設定を持っていったときに、EnterでもCommand+Enterでも送れない状態になることがありました。
今回のポイントは、Claude Codeをいじらないことです。
ZedのAgent PanelやACPを使うのではなく、いつもの claude コマンドをZedの内蔵ターミナルで動かします。
仕組み:ClaudeではなくZedでキーを変換する
Claude Code公式ドキュメントの標準動作は次のとおりです。
-
Enter=chat:submit(送信) -
Ctrl+J=chat:newline(改行)
一方、macOSのCommandキーはGUIアプリ側が処理することが多く、CLIまで同じ形で届くとは限りません。そこでZedのターミナルがキーを受け取った瞬間に変換します。
{
"context": "Terminal",
"bindings": {
"enter": ["terminal::SendKeystroke", "ctrl-j"],
"cmd-enter": ["terminal::SendKeystroke", "enter"]
}
}
つまり、
という単純な構造です。Zed公式ドキュメントにも terminal::SendKeystroke が用意されています。
~/.claude/keybindings.json は変更しません。これが、MacBookとMac mini、ローカルとSSH先で設定が混線しにくい理由です。
なお、この考え方はVS Codeで絶対に不可能という意味ではありません。VS Codeにもキー送信機能はあります。ただ、今回はZedのTerminal contextだけに閉じた設定で実機動作を再現できたため、この構成を採用しました。
また、VS Codeのキーバインドは超特殊で、過去に色々試しましたが、全て失敗に終わっています。
動作も軽いし、キーバインドも自由だし... PDFを見れないというくらいで、Zedのメリットが多いように感じます。
1. Zedを初めて使う人向けセットアップ
Zedをインストール
Zed公式のインストール手順どおり、Homebrewなら1行です。
brew install --cask zed
Claude Code CLIをインストール
curl -fsSL https://claude.ai/install.sh | bash
確認します。
claude --version
すでにClaude Code CLIを使っている人は、この手順は不要です。
初期設定キットを適用
git clone https://github.com/amu815/zed-claude-code-cli-kit.git
cd zed-claude-code-cli-kit
./install.sh
インストーラーが追加する主な内容は次のとおりです。
- VS Codeベースのキーマップ
-
Enter/⌘EnterのClaude Code向け変換 -
⌃⌘Iでclaudeを起動するZed Task - 日本語文字用のHiragino Sansフォールバック
- Markdown/LaTeXの折り返し
- ファイルアイコン、Git状態、ライト/ダークテーマ
- HTML、LaTeX、Docker、Make、CMake、CSV、ログ向け拡張の自動導入
- PDF起動用の
⌘⌥P
既に値がある設定は上書きしません。settings.json、keymap.json、tasks.json は変更前に日時付きバックアップを作ります。
JSONCのコメントや元の整形は新ファイルに残らないため、コメントが重要な人は
*.backup-日時も確認してください。
Zedを再起動し、⌃⌘I を押します。Claude Code CLIがターミナルで開けば成功です。
日本語化について
日本語の入力・表示はできます。今回の設定では、英数字フォントに日本語グリフがなくてもHiragino Sansへフォールバックします。
ただし、Zed本体のメニューや設定画面を日本語化する公式機能は、2026年8月23日時点ではありません。UIは英語のままです。国際化の進捗はZed Issue #7409で追えます。
2. SSH先でClaude Code CLIを使う
先に ~/.ssh/config へ普段の接続先がある前提です。
Host gpu
HostName example.com
User yourname
IdentityFile ~/.ssh/id_ed25519
ZedからそのSSHプロジェクトを開き、ローカルMacで次を実行します。
cd zed-claude-code-cli-kit
./install.sh \
--remote gpu \
--remote-root gpu=/home/yourname/project
gpu とプロジェクトパスは自分の環境に置き換えてください。Zedの設定にプロジェクトパスが登録済みなら、--remote-root は省略できます。
最後にZedのSSHプロジェクトを一度切断し、開き直します。これはPDF用ポート転送を有効にするためです。
Claude Code自体はSSH先のターミナルで通常どおり動きます。
3. Zedで読めないPDFを1キーで読む
ここは正直に書きます。2026年8月23日時点のZedには内蔵PDFビューアがありません。Built-in PDF viewerのDiscussionでも、LaTeXや研究用途、特にremote developmentでの不便さが話題になっています。
ローカルPDFなら外部アプリで開けば済みます。しかしSSH先のPDFに Open With System は使えず、毎回ダウンロードするのは面倒です。
そこで、このキットは次の経路を自動化しました。
使い方
- ZedのProject PanelでPDFを選ぶ、またはPDFを開いて「表示非対応」のタブを選ぶ
-
⌘⌥Pを押す - ローカルPDFは既定アプリ、SSH先PDFはブラウザで開く
LaTeXなどでPDFが再生成されると、ブラウザ側も自動で読み直します。日本語ファイル名とPDFのRange requestにも対応しています。
これはZedのタブ内にPDFを埋め込む拡張ではありません。しかし、SSH先から手動ダウンロードせず1キーで読めるため、研究・論文開発ではかなり実用的になりました。
PDF経路の安全性
- サーバーはSSH先の
127.0.0.1だけで待受 - Zed公式のSSH port forwardingもローカルホストだけで待受
- ランダムトークンがないHTTPアクセスは
403 Forbidden - 登録したworktree内の
.pdfだけ配信 - トークンはモード
600 - アクセスログのトークンは
[REDACTED] - クリップボード内容はログへ出さない
PDFのパスを検知するため、macOSのLaunchAgentがクリップボード変更を監視します。内容が絶対パスの .pdf と完全一致したときだけ動作します。常駐監視を使いたくない場合は次のように導入できます。
./install.sh --no-clipboard-agent
この場合、⌘⌥P によるPDF起動は使えません。
4. よく使うキー一覧
| キー | Zedでの動作 |
|---|---|
Enter |
ターミナルへ Ctrl+J を送る。Claude Codeでは改行 |
⌘ Enter |
ターミナルへ Enter を送り、Claude Codeでは送信 |
⌃ ⌘ I |
Claude Code CLI Taskを起動 |
⌘ ⌥ P |
PDFをローカル/remote previewで開く |
⌘ ⌥ O |
Project Panelのローカルファイルを既定アプリで開く |
⌘ ⌥ D |
Project PanelのSSH先ファイルをダウンロード |
通常のシェルでは Ctrl+J も改行コードとして扱われるため、物理Enterで今までどおりコマンドを実行できます。
5. 困ったとき
Command+Enterで送れない
ZedのCommand Paletteから zed: open keymap を開き、Terminal contextに設定が入っているか確認してください。
過去にClaude Code側の設定を変更した場合は、Claude Codeで /keybindings を実行し、chat:submit と chat:newline に競合がないか確認します。本キットはClaude側のファイルを自動修正しません。
SSH先PDFへ接続できない
インストール後にZedのSSHプロジェクトを開き直してください。ポート転送は再接続時に有効になります。
ポートが他のアプリと衝突している場合は変更できます。
./install.sh \
--remote gpu \
--remote-root gpu=/home/yourname/project \
--port 48766
PDFを選んでも動かない
launchctl print gui/$UID/dev.humanophilic.zed-pdf-preview
tail -n 50 ~/Library/Logs/ZedPdfPreview.log
cat ~/.config/zed-pdf-preview/remotes.json
macOSから「バックグラウンド項目が追加されました」と通知される場合があります。これはPDF起動用LaunchAgentです。
アンインストール
./uninstall.sh
SSH先にも導入した場合:
./uninstall.sh --remote gpu
まとめ
今回うまくいった一番の理由は、Claude Codeのキーバインドを無理に変えず、ZedのTerminal contextだけで変換したことでした。
- 普段のClaude Code CLIをそのまま使える
-
Enterで安全に複数行を書ける -
⌘Enterで明示的に送信できる - ローカルとSSH先で考え方が同じ
- Zedが未対応のremote PDFも1キーで読める
Zed自体は、まだ日本語UIや内蔵PDFビューアなど発展途上の部分があります。それでも、CLI中心のAI開発環境としては、このキー操作だけでもかなり快適になりました。
バグや改善案があれば、GitHubのIssueへお願いします。


