Readline ショートカット入門 - Ctrl+R / Ctrl+A でターミナル操作高速化

Readline ショートカット入門 - Ctrl+R / Ctrl+A でターミナル操作高速化

ターミナル操作、もっと速くできる

コマンドを打ち間違えて、矢印キーで延々とカーソルを戻す。さっき打った長いコマンドをもう一度入力する。——こういう「地味に遅い操作」は、ショートカット(キーバインド)を覚えるだけで一気に解決する。

この記事では、ターミナルでの入力を高速化する Readline ショートカットを、ライナとライニー先輩の会話でやさしく整理していく。bash でも zsh でも、ほぼ同じキーが使えるよ。

この記事でわかること

  • ショートカットの正体が「Readline」というライブラリであること
  • カーソルを一瞬で行頭・行末へ飛ばす方法(Ctrl+A / Ctrl+E)
  • 入力ミスをまとめて消す行編集(Ctrl+U / Ctrl+K / Ctrl+W)
  • 過去のコマンドを検索して再利用する Ctrl+R
  • 今日から使える厳選ショートカット早見表

1. そもそもショートカットの正体は?

結論: Ctrl+A などのショートカットは bash 固有ではなく、「Readline」という行編集ライブラリの機能。だから多くのシェルで共通して使える。

リナ: ライニー先輩、コマンドの途中でカーソルを動かしたいとき、いつも矢印キーを連打してて遅いんです…
ライニー先輩: それ、ショートカットで一瞬だよ。しかもそのショートカット、bash だけの機能じゃないんだ。
リナ: え、bash の機能じゃない?
ライニー先輩: うん。コマンドラインの「文字を打つ・消す・カーソルを動かす」部分は、Readline(リードライン)っていう共通のライブラリが担当しているんだ。bash も、たいていの環境の zsh も、このキー操作をそのまま受け継いでいる。
リナ: だから一度覚えれば、いろんな場所で使えるってことですね。
ライニー先輩: その通り。今日覚えるキーは、サーバーにSSHでログインした先でもそのまま効く。投資効率がすごくいいんだよ。

Readline は「行を編集する係」

ターミナルに表示される1行のコマンドを、入力・修正・履歴呼び出しまで面倒みているのが Readline。標準では Emacs というエディタ風のキー割り当てになっている(だから Ctrl 系が多い)。

2. カーソルを一瞬で行頭・行末へ

結論: Ctrl+A で行頭、Ctrl+E で行末へ即移動。長いコマンドの先頭を直すとき、矢印キー連打が不要になる。

リナ: まず何から覚えるのがおすすめですか?
ライニー先輩: 一番効くのは「カーソル移動」だね。長いコマンドの先頭にある sudo を付け忘れた、なんてとき、Ctrl+A で一瞬で行頭に飛べる。
リナ: A は…?
ライニー先輩: A は行の Ahead(先頭)、E は End(末尾)って覚えるといいよ。試しに長めのコマンドを打って、まだ Enter は押さずにやってみよう。
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 を覚えると、パスやオプションの修正がぐっと速くなる。

3. 入力ミスをまとめて消すには?

結論: Ctrl+U でカーソルより前を全削除、Ctrl+K で後ろを全削除、Ctrl+W で直前の単語を削除。Backspace 連打を卒業できる。

リナ: コマンドを打ち間違えたとき、Backspace を押しっぱなしにして全部消してます…
ライニー先輩: それも卒業しよう。打ち間違えて「全部消したい」なら、行頭に Ctrl+A で戻ってから Ctrl+K で一気に消す。あるいは Ctrl+U なら、カーソルより前をまとめて消せるよ。
リナ: 単語だけ消したいときは?
ライニー先輩: 直前の単語1つなら Ctrl+W。長いパスを打ち間違えたとき、Ctrl+W で1階層ずつ消せて便利だよ。
キー 動作
Ctrl+U カーソルよりをすべて削除
Ctrl+K カーソルより後ろをすべて削除
Ctrl+W カーソル直前の単語を削除
Ctrl+Y 直前に削除した内容を貼り付け

消す → 貼る はセット

Ctrl+U / Ctrl+K / Ctrl+W で消した内容は「キルリング」という場所に一時保存される。Ctrl+YYank=引き出す)でそのまま貼り付け直せる。間違えて消しても慌てなくて大丈夫。

4. さっき打ったコマンドをもう一度使うには?

結論: Ctrl+R で履歴を逆順に検索できる。一部のキーワードを打つだけで、過去の長いコマンドを呼び戻せる。

リナ: 昨日打った長い docker コマンド、もう一度使いたいんですけど、また全部打つしかないですか?
ライニー先輩: そこで Ctrl+R だよ。履歴検索といって、過去に打ったコマンドをキーワードで探し出せるんだ。Ctrl+R を押して、コマンドの一部、例えば docker って打ってみて。
リナ: あ! 昨日のコマンドが出てきました!
ライニー先輩: でしょう。そのまま Enter で実行、もう一度 Ctrl+R を押せばもっと古い候補、左右の矢印やCtrl+Eを押せば編集してから実行できる。やめたいときは Ctrl+G か Ctrl+C で抜けられるよ。
(reverse-i-search)`docker': docker compose up -d --build

Ctrl+R の操作の流れ

  1. Ctrl+R を押す((reverse-i-search) 表示になる)
  2. コマンドの一部を入力する(部分一致で候補が出る)
  3. もう一度 Ctrl+R:さらに古い候補へ
  4. Enter:そのまま実行 / Ctrl+G:キャンセル

上下の矢印キーや Ctrl+PPrevious)/ Ctrl+NNext)でも履歴を1つずつたどれる。直前のコマンドをちょっと直したいだけなら、こちらが手早い。

5. 画面と操作をリセットしたいときは?

結論: Ctrl+L で画面クリア、Ctrl+C で実行中コマンドの中断、Ctrl+D で入力終了。混乱したら使える「逃げ道」キー。

リナ: 画面が出力でいっぱいになって見づらいときは、どうすればいいですか?
ライニー先輩: Ctrl+L で画面がスッと綺麗になるよ。clear コマンドと同じだけど、打つより速い。それと、コマンドが終わらなくて固まったように見えるときは Ctrl+C で中断できる。
リナ: Ctrl+D も見たことあります。
ライニー先輩: Ctrl+D は「入力の終わり」を伝えるキー。プロンプトで何も入力せずに押すとログアウト(シェル終了)になる。cat で入力待ちになったときに終わらせる、なんて使い方もするよ。
キー 動作
Ctrl+L 画面をクリア(clear 相当)
Ctrl+C 実行中のコマンドを中断(SIGINT)
Ctrl+D 入力の終わり / 空のプロンプトでシェル終了

Ctrl+CCtrl+D は役割が違う。Ctrl+C は「今動いているものを止める」、Ctrl+D は「もう入力しないと伝える」。固まったように見えたらまず Ctrl+C を試すのが基本。

6. まず覚える厳選ショートカット

結論: いきなり全部は不要。「行頭/行末移動・行削除・履歴検索」の5つだけ先に体に入れると、操作スピードが体感で変わる。

リナ: 数が多くて、どれから覚えればいいか迷います…
ライニー先輩: 最初は5つでいい。下の早見表の上から順に、今日のターミナル作業で意識して使ってみて。1週間で指が勝手に動くようになるよ。
優先 キー 動作
1 Ctrl+A 行頭へ移動
2 Ctrl+E 行末へ移動
3 Ctrl+U カーソルより前を全削除
4 Ctrl+R コマンド履歴を逆順検索
5 Ctrl+L 画面をクリア

覚えたショートカットは、実際にコマンドを打つ場で使ってこそ定着する。ターミナルの使い方 のページで、手を動かしながら試してみよう。

リナ: まず Ctrl+A と Ctrl+E から! これだけでも矢印キー連打から解放されそうです。
ライニー先輩: その意気だよ。ショートカットは「覚える」より「使って慣れる」もの。今日から少しずつ指に覚えさせていこう。

まとめ

  • Ctrl 系ショートカットの正体は Readline ライブラリ。bash でも zsh でも共通して使える
  • Ctrl+A / Ctrl+E で行頭・行末へ一瞬移動できる
  • Ctrl+U / Ctrl+K / Ctrl+W で入力をまとめて消し、Ctrl+Y で貼り戻せる
  • Ctrl+R で過去のコマンドをキーワード検索して再利用できる
  • Ctrl+L(画面クリア)・Ctrl+C(中断)・Ctrl+D(入力終了)は覚えておくと安心
  • まずは5つだけ。使って慣れるのが上達の近道

次に読む