Readline ショートカット入門 - Ctrl+R / Ctrl+A でターミナル操作高速化
この記事でできるようになること
- Ctrl+A / Ctrl+R などの基本ショートカットでターミナル操作を速くできる
- 過去に打ったコマンドを素早く呼び出せる
前提知識(先に読むと理解しやすい記事)
ターミナル操作、もっと速くできる
コマンドを打ち間違えることがある。そのたびに矢印キーを何度も押す。カーソルを行き来させるだけで時間がかかる。さっき打った長いコマンドを、もう一度最初から入力し直すのも同じくらい面倒だ。
こうした「地味に遅い操作」は、ショートカット(キーバインド。特定のキーの組み合わせで操作を呼び出す仕組み)を覚えるだけで、一気に解決する。
この記事では、ターミナル入力したコマンドを解釈してコンピュータに実行させる対話プログラム。入力を高速化する Readline ショートカットを、リナとライニー先輩の会話でやさしく整理していく。bash でも zsh でも、ほぼ同じキーが使える(bash・zsh は「シェル」の種類だ。シェルとは、打ったコマンドを受け取って実行するプログラムのこと)。
この記事でわかること
- ショートカットの正体が「Readline」というライブラリであること
- カーソルを一瞬で行頭・行末へ飛ばす方法(Ctrl+A / Ctrl+E)
- 入力ミスをまとめて消す行編集(Ctrl+U / Ctrl+K / Ctrl+W)
- 過去のコマンドを検索して再利用する Ctrl+R
- 今日から使える厳選ショートカット早見表
- 覚えたショートカットを実際に試すミニ課題
1. そもそもショートカットの正体は?
結論: Ctrl+A などのショートカットは、bash 固有の機能ではない。「Readline」という行編集ライブラリの機能だ。だから多くのシェルで共通して使える。
Readline は「行を編集する係」
Readline は、ターミナルに表示される1行のコマンドの面倒をみている。入力・修正・履歴呼び出しまで、すべて担当する。標準では Emacs というエディタ風のキー割り当てになっている。だから Ctrl 系のキーが多い。
2. カーソルを一瞬で行頭・行末へ
結論:
Ctrl+Aで行頭へ、Ctrl+Eで行末へ、一瞬で移動できる。長いコマンドの先頭を直すとき、矢印キーの連打が不要になる。
sudo を付け忘れた。そんなとき、Ctrl+A で一瞬で行頭に飛べる。echo これはとても長いコマンドの例です
| キー | 動作 | 覚え方 |
|---|---|---|
Ctrl+A |
行頭へ移動 | Ahead(先頭) |
Ctrl+E |
行末へ移動 | End(末尾) |
Ctrl+F |
1文字右へ | Forward |
Ctrl+B |
1文字左へ | Backward |
Alt+F |
1単語右へ | Forward word |
Alt+B |
1単語左へ | Backward word |
1文字ずつなら矢印キーでもいい。けれど、単語単位で飛べる Alt+F / Alt+B を覚えると、パスファイルやディレクトリの場所を表す文字列。やオプションの修正にかかる手数が減る。
macOS の標準ターミナルでは、Alt(Option)キーがそのままでは効かないことがある。その場合は Esc を押してから F を押すと、同じ動きになる。
3. 入力ミスをまとめて消すには?
結論:
Ctrl+Uはカーソルより前を全削除する。Ctrl+Kは後ろを全削除する。Ctrl+Wは直前の単語を削除する。Backspace の連打から卒業できる。
/home/lina/Documents みたいなパスは、どうなりますか?/ ごとに1階層ずつ消える」わけではないから、そこは注意してね。| キー | 動作 |
|---|---|
Ctrl+U |
カーソルより前をすべて削除 |
Ctrl+K |
カーソルより後ろをすべて削除 |
Ctrl+W |
カーソル直前の単語(空白で区切られたひとかたまり)を削除 |
Ctrl+Y |
直前に削除した内容を貼り付け |
Ctrl+U の消える範囲はシェルによって違う
bash では Ctrl+U はカーソルより前だけを消す。zsh では初期設定のまま使うと、カーソル位置に関係なく行全体が消える。まずは短い入力で1回試して、どこまで消えるか自分の目で確かめよう。
消す → 貼る はセット
Ctrl+U / Ctrl+K / Ctrl+W で消した内容は「キルリング」という場所に一時保存される。Ctrl+Y(Yank=引き出す)でそのまま貼り付け直せる。間違えて消しても慌てなくて大丈夫。
4. さっき打ったコマンドをもう一度使うには?
結論:
Ctrl+Rで履歴を逆順に検索できる。一部のキーワードを打つだけで、過去の長いコマンドを呼び戻せる。
docker コマンドを、もう一度使いたいです。また全部打つしかないですか?Ctrl+R を押して、コマンドの一部、例えば docker と打ってみて。(reverse-i-search)`docker': docker compose up -d --build
Ctrl+R の操作の流れ
Ctrl+Rを押す((reverse-i-search)表示になる)- コマンドの一部を入力する(部分一致で候補が出る)
- もう一度
Ctrl+R:さらに古い候補へ Enter:そのまま実行 /Ctrl+G:キャンセル
上下の矢印キーや Ctrl+P(Previous)/ Ctrl+N(Next)でも履歴を1つずつたどれる。直前のコマンドをちょっと直したいだけなら、こちらが手早い。
5. 画面と操作をリセットしたいときは?
結論:
Ctrl+Lで画面クリア、Ctrl+Cで実行中コマンドの中断、Ctrl+Dで入力終了ができる。混乱したときに使える「逃げ道」キーだ。
Ctrl+L を押すと、画面がすぐきれいになるよ。clear コマンドと同じ効果だけど、打つより速い。コマンドが終わらず、固まったように見えるときは Ctrl+C で中断できる。Ctrl+D を押したことがあります。そうしたらターミナルごと閉じてしまって、すごく焦りました…Ctrl+D は「もう入力しない」と伝えるキーで、動いているコマンドを止める効果はないんだ。Ctrl+C、もう何も入力しないなら Ctrl+D。プロンプトコマンドの入力を待っている状態を示す記号(例 $ や #)。で何も入力せずに Ctrl+D を押すと、ログアウト(シェル終了)になる。cat コマンドで入力待ちのとき、入力を終わらせるためにも使うよ。| キー | 動作 |
|---|---|
Ctrl+L |
画面をクリア(clear 相当) |
Ctrl+C |
実行中のコマンドを中断 |
Ctrl+D |
入力の終わり / 空のプロンプトでシェル終了 |
Ctrl+C と Ctrl+D は役割が違う。Ctrl+C は「今動いているものを止める」、Ctrl+D は「もう入力しないと伝える」。固まったように見えたら、まず Ctrl+C を試すのが基本だ。
6. まず覚える厳選ショートカット
結論: いきなり全部は不要だ。「行頭 / 行末移動・行削除・履歴検索」の5つだけ、先に体に入れよう。それだけで、1回の入力にかかる時間が短くなる。
| 優先 | キー | 動作 |
|---|---|---|
| 1 | Ctrl+A |
行頭へ移動 |
| 2 | Ctrl+E |
行末へ移動 |
| 3 | Ctrl+U |
カーソルより前を全削除 |
| 4 | Ctrl+R |
コマンド履歴を逆順検索 |
| 5 | Ctrl+L |
画面をクリア |
覚えたショートカットは、実際にコマンドを打つ場で使ってこそ定着する。ターミナルの使い方 のページで、手を動かしながら試してみよう。
7. ミニ課題 - 手を動かして確認しよう
課題1: 長めのコマンドを入力し(Enter はまだ押さない)、カーソルを行の先頭と末尾へすばやく移動させてみよう。
ヒント1(方向づけ)を見る
矢印キーを何度も押さなくても、1回のキー操作で行の端まで移動できるキーがある。
ヒント2(キー名)を見る
行頭へは Ctrl+A、行末へは Ctrl+E を使う。
答えを見る
echo などで長めのコマンドを入力する(まだ Enter は押さない)。Ctrl+A を押すとカーソルが行頭に、Ctrl+E を押すと行末に、一瞬で移動する。
課題2: 入力したコマンドの途中にカーソルを置き、「前だけ」「後ろだけ」を、それぞれ削除してみよう。
ヒント1(方向づけ)を見る
Backspace を連打しなくても、カーソルを基準に「前」と「後ろ」をまとめて消せるキーが、それぞれ用意されている。
ヒント2(キー名)を見る
カーソルより前を消すのは Ctrl+U、後ろを消すのは Ctrl+K。
答えを見る
コマンドの途中にカーソルを置いた状態で Ctrl+U を押すと、カーソルより前が消える。同じ位置で Ctrl+K を押すと、カーソルより後ろが消える。消えた内容は Ctrl+Y で貼り戻せる。
課題3: さっき自分が打ったコマンドを、履歴検索で呼び出してみよう。
ヒント1(方向づけ)を見る
コマンド全体を覚えていなくても、一部のキーワードだけで過去の入力を探し出せるキーがある。
ヒント2(キー名)を見る
Ctrl+R を押してから、コマンドの一部を入力する。
答えを見る
Ctrl+R を押すと (reverse-i-search) と表示される。そこにコマンドの一部(例: echo)を入力すると、一致する過去のコマンドが表示される。Enter で実行、Ctrl+G でキャンセルできる。
まとめ
- Ctrl 系ショートカットの正体は Readline ライブラリ。bash でも zsh でも共通して使える
Ctrl+A/Ctrl+Eで行頭・行末へ一瞬移動できるCtrl+U/Ctrl+K/Ctrl+Wで入力をまとめて消し、Ctrl+Yで貼り戻せるCtrl+Uはカーソルより前を全部消す。カーソル位置によっては、思ったより多く消えるので注意Ctrl+Rで過去のコマンドをキーワード検索して再利用できるCtrl+L(画面クリア)・Ctrl+C(中断)・Ctrl+D(入力終了)は覚えておくと安心- まずは5つだけ。使って慣れるのが上達の近道