入力の移動・削除・履歴を、使う場所ごとに確かめる
コマンドの先頭へ戻る、単語を消す、入力中の行をいったんよける。Mac のターミナルや AI の入力欄で、こうした編集をキーボードから行いたい場面があります。ところが、覚えたキーを押しても動かなかったり、意図しない記号が入ったりすると、操作の割り当てと環境設定のどちらを確かめるべきか迷います。
TechAthletes が自社のサービスを作る中でも、Mac のターミナル.app と、その中で動かす AI のコーディング用 CLI「Claude Code」で、この問題が起きました。2026年10月の記録では、zsh で Option+D を押すと「∂」が入り、行頭へ移動する Ctrl+A も効きませんでした。
そこで、キーが入力先まで届いているかを調べ、ターミナルの設定と常駐アプリの割り当てを確認しました。あわせて、2026年10月20日に取得した公式資料とショートカットを照合しています。zsh は、設定ファイルを読み込まない zsh -f で zsh 5.9 を起動し、bindkey -e で Emacs 風の設定にしたうえで、bindkey -M emacs の割り当ても確かめました。
以下は、その確認に基づく一覧です。作業時間の短縮効果は測っていません。ここで扱うのは、各キーの役割と、期待どおり動かない場合にどこを見るかです。
Option の設定と、Ctrl+A が届くかを切り分ける
Option+D が「∂」になった原因は、ターミナル.app の「メタキーとしてOptionキーを使用」がオフだったことでした。この状態では、Option+A は「å」、Option+B は「∫」、Option+F は「ƒ」のように、Option と文字キーの組み合わせが記号の入力になります。
ターミナル.app では、設定 → プロファイル → キーボード →「メタキーとしてOptionキーを使用」を確認します。設定はプロファイルごとなので、別のプロファイルのウィンドウにも同じ設定が入っているとは限りません。
今回、Claude Code の入力欄でも Option+A/B/F が「å∫ƒ」になり、再起動では直りませんでした。入力するアプリだけでなく、その入力を受け渡すターミナル側の設定を見る必要がありました。Claude Code の最初の起動で案内される /terminal-setup を受け入れていれば、ターミナル.app にはこの設定が入ると公式ドキュメントに記載されています。
ほかのターミナルでは、iTerm2 は Settings → Profiles → Keys → General の Left/Right Option key を「Esc+」にします。VS Code の統合ターミナルでは、次の設定を使います。
"terminal.integrated.macOptionIsMeta": true
一方、Ctrl+A が効かず、Option を一緒に押すと動いた件は、別の問題でした。切り分けに使ったコマンドは次のとおりです。
cat -v
これを実行して Ctrl+A を押し、^A が出るかを確認します。^A が出ればキーは届いているため、シェル側の割り当てを調べます。何も出なければ、途中で別のアプリがキーを受け取っていないかを調べます。
今回の原因は、常駐していた翻訳アプリ DeepL のショートカット設定が、Ctrl の組み合わせを先に受け取っていたことでした。DeepL の設定でショートカットを変えると直りました。同じキーを二つのアプリが使おうとしていたという問題で、翻訳アプリの不具合ではありません。
確認の途中で Option+A を押すと、コマンドを実行して入力した行を残す動きも見られました。これは zsh の標準の割り当て accept-and-hold(ESC-a)です。この動作も、zsh 自体が標準の Emacs 風の設定で動いていることを確かめる手がかりになりました。現在の割り当ては bindkey で確認できます。表示される ^A は Ctrl+A、^[b は Option+B、つまり Meta の組み合わせです。
なお、デスクトップアプリや VS Code 拡張のパネルで確認した入力欄には、Meta の設定がありませんでした。こうした普通の Mac の入力欄では、単語の移動に Option+←/→、前の単語の削除に Option+Delete、行頭・行末への移動に Control+A / Control+E を使います。
Mac のターミナルで使う zsh のショートカット一覧
次の表は、zsh の Emacs 風の標準設定を対象に、公式マニュアルと照合したものです。Option と文字キーを組み合わせる操作は、前節の Meta 設定を確認してから使います。
| 区分 | 操作 | キー | zsh の操作名 |
|---|---|---|---|
| 移動 | 行頭 / 行末 | Ctrl+A / Ctrl+E | beginning-of-line / end-of-line |
| 移動 | 1文字戻る / 進む | Ctrl+B / Ctrl+F | backward-char / forward-char |
| 移動 | 1単語戻る / 進む | Option+B / Option+F(Meta の設定が要る)。ターミナル.app では Option+← / → でも単語単位で動く(Apple のヘルプ) | backward-word / forward-word |
| 移動 | 好きな位置へ | Option を押したままクリック(ターミナル.app・Apple のヘルプ) | — |
| 削除 | カーソルから行末まで | Ctrl+K | kill-line |
| 削除 | 行全体 | Ctrl+U(zsh では行全体。Claude Code の入力欄では「カーソルから行頭まで」で意味が違う) | kill-whole-line |
| 削除 | 前の単語 | Ctrl+W(Option+Delete も同じ操作) | backward-kill-word |
| 削除 | 次の単語 | Option+D | kill-word |
| 削除 | カーソル位置の1文字 | Ctrl+D(何も入っていない行で押すとシェルが終わる) | delete-char-or-list |
| 貼り付け | 消したものを貼る / さらに前に消したものに替える | Ctrl+Y / Option+Y | yank / yank-pop |
| 取り消し | 直前の編集を戻す | Ctrl+_ | undo |
| 編集 | 単語を大文字 / 小文字 / 先頭だけ大文字 | Option+U / Option+L / Option+C | up-case-word / down-case-word / capitalize-word |
| 編集 | 前後の文字 / 単語を入れ替え | Ctrl+T / Option+T | transpose-chars / transpose-words |
| 履歴 | さかのぼって検索 | Ctrl+R | history-incremental-search-backward |
| 履歴 | 前 / 次 | Ctrl+P / Ctrl+N | up-line-or-history / down-line-or-history |
| 履歴 | 直前のコマンドの最後の引数を入れる | Option+.(続けて押すとさらに前のコマンドの) | insert-last-word |
| 履歴 | 入力中の行をいったんよけて、別のコマンドを先に打つ | Ctrl+Q または Option+Q(次のプロンプトでよけた行が戻る) | push-line |
| 実行 | 実行して、入力した行を残す | Option+A | accept-and-hold |
| 他 | 画面のクリア | Ctrl+L(ターミナル.app の Command+K は「開始位置まで消去」=スクロールして戻れる分も消す) | clear-screen |
入力中の行をよける Ctrl+Q には、設定による注意点があります。zsh のオプション FLOW_CONTROL が有効だと、^S / ^Q が端末の出力の一時停止・再開に使われることがあります。Ctrl+Q が効かない環境では、同じ push-line に割り当てられた Option+Q(ESC-q)を使います。
キーが動かないときは、一覧の割り当てだけで判断せず、現在の bindkey の結果や端末の設定と照らし合わせます。
Claude Code の入力欄で使うショートカット一覧
Claude Code の入力欄には、文章の編集に加え、権限のモード変更や応答の停止などの操作があります。次の表は、公式ドキュメントで確認した割り当てです。
| 操作 | キー | 公式の説明の要点 |
|---|---|---|
| 送らずに改行 | \ を打ってから Enter/Ctrl+J(どの端末でも)/Shift+Enter(ターミナル.app・iTerm2 などでは設定なしで効く)/Option+Enter(Meta の設定が要る) |
VS Code などは /terminal-setup を1回実行すると Shift+Enter が効く |
| 権限のモードの切り替え | Shift+Tab | default・acceptEdits・plan などを順に切り替える |
| 応答を止める | Esc | それまでの作業は残る |
| 入力を消す・巻き戻し | Esc を2回 | 入力があるときは消して履歴に残す。空のときは巻き戻しのメニューを開く |
| 中断・入力を消す | Ctrl+C | 動いているものを止める。何も動いていなければ1回目で入力を消し、2回目で終了 |
| 終わる | Ctrl+D | 入力が空のときに2回で終了。入力があるときはカーソルの後ろの1文字を消す |
| 履歴をさかのぼって検索 | Ctrl+R | |
| 入力をいったんよける | Ctrl+S | 入力があるときに押すとよけて空にする。空のときに押すと戻す |
| エディタで入力を書く | Ctrl+G | 既定のテキストエディタで入力を編集する |
| 画面の描き直し | Ctrl+L | 入力と会話は残したまま描き直す(zsh のクリアとは違う) |
| モデルの切り替え | Option+P | Meta の設定が要る |
| 行頭 / 行末 | Ctrl+A / Ctrl+E | |
| 行末まで削除 / 行頭まで削除 | Ctrl+K / Ctrl+U | 消したものは Ctrl+Y で貼れる |
| 前の空白まで削除 | Ctrl+W | src/utils/foo.ts のようなパスを1回でまとめて消す。前の単語だけなら Option+Delete |
| 単語の移動・削除 | Option+B / Option+F / Option+D | Meta の設定が要る |
| 直前の編集を戻す | Ctrl+_ |
同じターミナルの中でも、zsh のプロンプトと Claude Code の入力欄では、同じキーの意味が変わります。特に先に区別しておきたいのは、Ctrl+U・Ctrl+L・Ctrl+D です。
Ctrl+U は、zsh では行全体を消しますが、Claude Code ではカーソルから行頭までを消します。Ctrl+L は、zsh では画面のクリア、Claude Code では入力と会話を残したままの描き直しです。Ctrl+D は、zsh では空の行で押すとシェルが終了しますが、Claude Code では入力が空のときに2回押すと終了します。
また、Claude Code の Ctrl+W は「前の空白まで」の削除です。パスの一部だけを編集したいときには、前の単語を削除する Option+Delete との違いも確認しておくと、操作を選べます。
業務に置き換えると
チームで開発環境をそろえるときは、ショートカットの一覧と、それを使うための設定を一緒に確認します。今回の記録で分かれたのは、Option が記号として入力される問題と、別のアプリが Ctrl の組み合わせを先に受け取る問題でした。「効かない」という報告でも、実際に届いた入力を見ることで、次に調べる場所を分けられます。
新しく環境を用意するときや、入力操作の相談を受けたときには、次の項目を点検できます。
- 使っているプロファイルの設定を確認する。 ターミナル.app の「メタキーとしてOptionキーを使用」が、実際に開いているウィンドウのプロファイルで有効かを見ます。
- キーが届いているかを確認する。 Ctrl+A が効かなければ
cat -vで^Aが出るかを確認し、シェルの割り当てと常駐アプリの設定を切り分けます。 - 常駐アプリとのキーの重なりを確認する。 翻訳、ランチャー、ウィンドウ整列、キー割り当てのアプリなどが、同じ組み合わせを使っていないかを調べます。
- 入力先による違いを先に共有する。 zsh と Claude Code で意味が異なる Ctrl+U・Ctrl+L・Ctrl+D を伝え、普通の Mac の入力欄で使う操作も分けて案内します。
この記事は、TechAthletes が自社のサービスを作る中で記録した実測をもとに書いています。業務への導入のご相談は 仕事の窓口 で受け付けています。