Bashは、以下を介して逆検索する機能を提供します Ctrl + R。次に、コマンドの一部を入力すると、履歴から適切なエントリが表示されます。
これが私の歴史だとしましょう:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
foo
を検索します。ヒッティング Ctrl + R 再び次のフィッティング検索エントリを表示します。多くの場合、私はあまりにも速く、意図した結果を超えてナビゲートし、vim foo3
が表示されたので、vim foo2
に戻りたいと思います。
したがって、私の質問は次のとおりです。逆検索内を移動するにはどうすればよいですか。
これには、デフォルトでバインドされているforward-search-history
関数を介してアクセスできます。 ctrl+s。残念ながら ctrl+s デフォルトでxoff
を通知するために使用されます。つまり、これを使用して検索の方向を変更することはできません。この問題を解決するには2つの解決策があります。1つはxoff/xon
シグナリングの送信を無効にし、もう1つはforward-search-history
のキーバインディングを変更します。
ターミナルでstty -ixon
を実行するか、~/.bashrc
に追加します。これにより、 ctrl+sforward-search-history
履歴関数を使用します。
制御フローの詳細については、 ターミナルで誤ってCtrl-Sを押した後にフリーズを解除する方法 といくつかの回答を参照してください
デフォルトの動作を変更したくない場合 ctrl+sbind
を使用してforward-search-history
のキーバインドを変更できます。ほとんどのキーはすでにbashで定義されているため、クリエイティブにする必要がある場合があります。
bind "\C-t":forward-search-history
これはバインドされます ctrl+t forward-search-historyを使用しますが、デフォルトでは ctrl+t 実行transpose-chars
Bashによって提供される基本的な逆方向検索と順方向検索の代わりに、以下を調べてみてください。
fzf 、自己記述型の「コマンドラインファジーファインダー」。
Bash(および他の端末)のデフォルトの逆検索を置き換えることができます。
その利点は次のとおりです。
私のワークフローは、私が制御しているマシンでの基本的な逆検索では、完全にfzfに依存しています。