前のセッションで叩いたプロンプトをもう一度使いたい時、Up arrow で延々遡るのを止めたい人向け
1〜2件前ではなく20件以上前のプロンプトを呼び戻したい時、または毎週繰り返している長文プロンプト(週次まとめ依頼、OSSを読ませる初手など)を再投入したい時に押す。Up arrow連打が辛くなったらこちらに切り替える
Claude Codeの黒い画面で長文の指示を書いて叩いたあと、翌週同じ指示をもう一回出したくなる場面はかなり多いはずです。Up arrow を連打して履歴を遡るのは1〜2件先までなら効くものの、20件前のプロンプトを掘り出すには現実的に厳しい。そこで使うのが Ctrl+R です。前に叩いたプロンプトを文字列検索して呼び出す押し方で、bash で同じ操作に慣れている人なら感覚的に分かるはずです。
ただ、Claude Code版の Ctrl+R には bash と違う点が3つあります。検索する範囲が default で「過去にこのパソコンで叩いた全プロジェクト」になっていること、Ctrl+S でその範囲を3段階で切り替えられること、検索ヒット部分が色付きで光ること。この3つを知らないと「自分のプロジェクトの履歴だけ見たいのに別フォルダのが混ざる」みたいな迷子に必ず一度なります。
噛み砕くと
Ctrl+R は、過去に自分が黒い画面で打ち込んだプロンプトを「だいたいこんな単語が入ってたやつ」で探し当てるための押し方です。本の索引で「あのページに何書いてあったっけ」と単語を引くのに近い感覚で、Claude Codeに何百行も打ったプロンプトの中から1個を拾い直せます。Up arrow が「1ページ戻る、もう1ページ戻る」だとすると、Ctrl+R は「索引から目当てのページに直接飛ぶ」イメージ。
たとえばですが、先週「/init のあと CLAUDE.md に Don't add fallbacks ルールを書け」みたいな長文の依頼を出していたとして、今日も同じことを言いたい時。タイプし直すのはだるいし、コピペしておくのも面倒。そういう時、検索1単語で当時のプロンプトを呼び戻せる、というのが Ctrl+R の存在理由です。
先に押さえたい:履歴はフォルダごとに保存されている
これを知らないと「履歴が消えた」と勘違いします。Claude Codeは入力履歴をフォルダ単位で記録していて、たとえば ~/projects/cooking-blog と ~/projects/finance-app では別の履歴を持っています。default の検索範囲は「全フォルダ横断」なので、cooking-blog にいても finance-app で叩いたプロンプトまでヒットします。古い別プロジェクトのプロンプトが混ざるのを避けたい場合は Ctrl+S で範囲を絞る、と覚えておきます。
もう1つ。/clear を叩いた直後は入力履歴が一度 reset されます。会話履歴のほうは /resume で復元できますが、入力履歴は別管理で、/clear 直後の Ctrl+R は「ここから先の入力分」しか拾えません。
「cooking-blogプロジェクトで1週間前のプロンプトを掘り出す」を例に、実際の手順を見る
1週間前、cooking-blogフォルダで「/init を叩いて作った CLAUDE.md に、追加で『Don't add fallbacks(不要な代替コードを足すな)』ルールを書いてくれ」みたいな長文を打ったとします。今日また同じ依頼を出したい。Up arrow 連打だと届かないので、Ctrl+R で取り出します。
ステップ1: 検索モードに入る
Claude Codeを起動して、プロンプト入力欄に何も入っていない状態で Ctrl+R を1回押します。画面下部のプロンプト入力欄が検索モードに切り替わって、「reverse-i-search」みたいな表示と入力カーソルが出ます。これで検索準備完了です。
(reverse-i-search): _
ステップ2: 1単語だけ打ち込む
頭の中で「あのプロンプトに含まれていた特徴的な単語」を1つだけ思い出して、それを打ちます。今回は「fallbacks」と打ってみます。Claude Codeはタイプした瞬間に履歴を端から検索して、最初に見つかったヒット行を入力欄にプレビュー表示します。検索した単語の部分は色付き(黄色や反転表示)でハイライトされるので、目で「これだ」と認識できます。
(reverse-i-search)`fallbacks`: /init を叩いて CLAUDE.md を作ったあと、その末尾に「Don't add fallbacks」ルールを追記してほしい...
ステップ3: ヒットが目的のやつじゃなかったら、もう一度 Ctrl+R
ここでヒットしたのが目的のプロンプトじゃない場合、たとえばもっと古いやつだったり別プロジェクトで叩いたやつだったりした場合、Ctrl+R をもう1回押します。すると、同じ検索語で「もう1つ前にヒットするやつ」へジャンプします。何度も押すと、古い方向にさかのぼっていきます。
ここで初心者がやりがちな勘違い
default の検索範囲は「全プロジェクト横断」なので、cooking-blogにいるのに別フォルダの finance-app で打った fallbacks 関連プロンプトがまずヒットすることがあります。「あれ、こんなプロンプト打ったっけ?」となったら、ほぼ別フォルダのです。次ステップで範囲を絞ります。
ステップ4: 検索範囲を「今のプロジェクトだけ」に絞る
検索モード中に Ctrl+S を押します。すると、検索範囲が3段階で順に切り替わります。順番は「all projects」→「this session」→「this project」→ また「all projects」に戻る、という cycle 構造。プロジェクト内に絞りたいので「this project」が出るまで Ctrl+S を押します。表示は画面下部の検索バーに今の範囲が書かれているはずなので、そこを見ながら切り替えます。
(reverse-i-search [this project])`fallbacks`: /init を叩いて CLAUDE.md...
ステップ5: 目的のプロンプトが出たら、TabかEscで取り込み
目当てのプロンプトが画面に出たら、Tab または Esc を押します。検索モードが終わって、ヒットしたプロンプトがそのまま入力欄に貼り付いた状態になります。ここから普通の入力欄として編集できるので、たとえば一部書き換えたり語尾を足したりして、今日用に少し直してから Enter で送信します。
「もう編集も要らない、そのまま送信したい」場合は Enter を直接押します。検索モードから抜けると同時に Claude Code がそのプロンプトを実行します。流れを断つ短さで言うと、「Tab/Escは取り込み、Enterは即発射」。
ステップ6: 検索をやめたい時はCtrl+CかBackspace
探したいやつが見つからない、または「やっぱり今回は普通に新規入力する」と切り替えたい時は Ctrl+C を押します。検索モードが終わって、検索に入る前の入力欄の中身が復元されます。検索欄が空っぽの状態で Backspace を押しても同じくキャンセル扱いになります。脱出経路が2つあるので、どっちでもOK。
つまり Ctrl+R は何をしてくれるのか
- やってくれる: 過去に自分が黒い画面で打ち込んだプロンプトを、特徴的な1単語から逆向きに検索して取り出す
- やってくれる: ヒットしたプロンプトをそのまま編集できる状態で入力欄に戻す(Tab/Esc)か、即実行する(Enter)
- やってくれる: 検索範囲を
Ctrl+Sで「全プロジェクト / 今のセッションだけ / 今のプロジェクトだけ」の3段階に切り替える - やってくれない: Claude Codeの返答内容を検索すること。検索対象になるのはあくまで「自分が打ち込んだ過去のプロンプト」だけです
- やってくれない:
!!のような bashの履歴展開記法での再投入。history expansion 機能は default で無効化されています - 意味が薄い場面: Claude Codeを使い始めて間もない時期。履歴が数件しか溜まっていない段階だと
Up arrowの方が速いです
使いどころ3シナリオ(具体題材で再現)
シナリオ1: 毎週金曜の「週次まとめ依頼」を再投入する
家計簿アプリを個人開発していて、毎週金曜にClaude Codeへ「今週の変更履歴を読んで、ユーザー向けリリースノートのドラフトを書いて」みたいな長文の依頼を出している。毎週ほぼ同じ内容なので、毎回タイプし直すのはバカらしい。金曜になったら Ctrl+R →「リリースノート」と1単語打って、先週叩いたやつを呼び出して、日付部分だけ書き換えて Enter。これだけで定例タスクが1分で終わります。私はこの使い方が一番ハマっている用途です。
シナリオ2: OSSのソースを読ませる時の「初手」を呼び戻す
GitHubから新しいOSSをダウンロードしてくるたびに、私は「まず README とフォルダ構成を読んで、3行で何をするツールか教えて。それから主要なエントリーポイントを src/ 配下から探して」みたいな初手プロンプトを毎回叩きます。書きおろすと毎回ちょっとずつ違って気持ち悪い。Ctrl+R で範囲を「all projects」のまま「README とフォルダ構成」で検索 → 過去どこかで叩いた同じ形のプロンプトをそのまま流用。プロジェクトを跨いで使いまわせる依頼は、default 範囲の広さが逆にありがたく働きます。
シナリオ3: 失敗したプロンプトのテンプレを呼び戻して書き直す
料理ブログプロジェクトで「テーマカラーをオレンジ系に変更して、ボタンに丸み付けて、フォントは丸ゴシック寄りにして」と依頼したものの、出力が好みじゃなかった。1時間後に「やっぱりさっきの依頼の、丸ゴシックだけ別の方向で」と書き直したくなる。Up arrow 連打だとその間に挟まった10件のプロンプトを順に飛ばさないといけないので面倒。Ctrl+R →「丸ゴシック」で1発で当時のプロンプトに着地して、語尾だけ書き換えて再送する、というのが体感で一番早い。
初心者が踏みやすい落とし穴
- defaultの検索範囲が「all projects」になっているのを知らない。今のフォルダにいるつもりが、別フォルダで叩いた古いプロンプトが混ざる。「あれ、こんなの叩いてない」と思ったら、まず
Ctrl+Sで範囲を「this project」に絞る /clearを叩いた直後は入力履歴が reset されている。会話のほうは/resumeで戻せるが、入力履歴は別管理。/clear直前まで叩いていたプロンプトはCtrl+Rでも拾えなくなる場合がある(仕様上 reset されるため)- bashの
!!や!fallbacksみたいな履歴展開記法は使えない。Claude Codeは history expansion (!) を default で無効にしている。代わりに!始まりは shell mode の起動押し方として動くので、混同に注意 - Tabで「取り込んで編集」とEnterで「即実行」を取り違える。Enterは即実行なので、「ちょっと書き換えてから送りたい」のに
Enter押してそのまま発射してしまう事故がよくある。迷ったら必ずTabかEscで取り込み、確認してからEnter - 検索文字列を長く打ちすぎてヒットゼロになる。「先週叩いたあのCLAUDE.mdに追加で書けって依頼」と長く打つとマッチしない。検索は1〜2単語、特徴的な英単語1個が一番速いです(たとえば
fallbacksやrelease-noteなど) Up/Down arrowと取り違えて疲弊する。Up arrowは「単純に1件ずつ古いプロンプトを呼び出す」、Ctrl+Rは「文字列検索」。20件以上前のプロンプトを取り出したいなら迷わずCtrl+R一択- 履歴がフォルダごとに分離されているのを忘れる。「家のMacで叩いたあのプロンプトが、職場のMacの
Ctrl+Rで出てこない」というのは仕様通りで、フォルダの保存場所が違うため別履歴になっている
書き方
Ctrl+R
やってみるとこうなる
入力
[プロンプト入力欄が空の状態で] Ctrl+R → fallbacks [と打つ]
出力例
(reverse-i-search)`fallbacks`: /init を叩いて CLAUDE.md を作ったあと、その末尾に「Don't add fallbacks」ルールを追記してほしい...
このページに出てきた言葉
- プロンプト
- AIに対して打ち込む指示文。「○○を作って」「△△を直して」などの依頼テキスト
- reverse-i-search
- 「逆向き対話的検索」の意味。新しいものから古いものへさかのぼりながら、ヒットを1件ずつ見せていく検索方式
- スコープ
- 検索する範囲のこと。<code>Ctrl+S</code> で「全プロジェクト」「今のセッションだけ」「今のプロジェクトだけ」の3段階を切り替えられる
- セッション
- Claude Codeを起動してから終了するまでの1回分の作業区切り。<code>/clear</code> を叩くと現在のセッションが終わって新しいセッションが始まる
- history expansion
- bashで <code>!!</code> や <code>!fallbacks</code> と書くと過去の入力を呼び戻せる短縮記法。Claude Codeでは default で無効にされている
- 履歴
- Claude Codeが「自分の作業フォルダ別に」覚えているプロンプトの打ち込み記録。フォルダごとに別ファイルに保存されている