質問:どのように伝えますか Ctrl+r 「自分自身をリセット」するリバースi検索を行い、毎回履歴の下から検索を開始しますか?
背景:Bashでreverse-i-searchを使用している場合、履歴の検索が終了し、一致するものを見つけることができないと、常に行き詰まります。 。たまに当たる Esc そして再度呼び出す Ctrl+r 2回目は、履歴の下から新しい検索が開始されることを期待しています。しかし、「ポインタ」は、私の歴史のなかで中断した前の場所に残っているようです。
問題は、私は通常この動作を望まないということです。私がヒットした場合 Esc、その後再度呼び出す Ctrl+r、それをもう一度下から再開して、上に戻るように指示することを希望します。
更新:これまで述べた解決策はどれも機能しないため、私はWindowsでCygwinを使用していると述べたはずです。
更新:この質問は 重複する可能性のある質問 としてマークされました。次の理由により、この質問は重複していません。
Escapeを押すときにこれをデフォルトにしたことはありませんが、bashは入力にreadline
を使用します。これはデフォルトでEmacsスタイルのキーバインディングを受け入れるため、M->
を使用して最後に移動できます(通常、 Meta/Altと>
、またはエスケープキーの後に>
)を入力します。
ターミナルで入力できないためにM->
が機能しない場合は、^G
を試してください(ControlとG
を同時に)。これはEmacsの「キャンセル」ストロークであり、通常はreadline
でも機能します。
私のbashは期待どおりに動作します。 「esc」の代わりに「ctrl + C」を押すと役立つ場合があります。
また、「ctrl + s」を使用して前方検索できます
編集:ctrl + sは、端末に「stop」を送信しない場合、つまり「stty -a」が「-ixon」を提供する場合に機能します。 「stty -ixon」で変更できます。リマインダーをありがとう@Phil。
この質問に対する確認済みの回答を得ました。
Ctrl-rをリセットするには、通常のemacsキーctrl-gを使用します。 ctrl-rを1ステップ逆にしたい場合は、下から上に移動するのではなく、次を使用できます。 ctrl-s 。トリックはctrl-sは端末を一時停止するためにも使用されます。したがって、別のキーに割り当てる必要があります。たとえば、次は一時停止をctrl-wに設定します(ctrl-qで「再開」を保持します)。
$ stty STOP ^w
または、XON/XOFF(再開/一時停止)フロー制御文字を完全に無効にすることもできます。
$ stty -ixon -ixoff
これにより、ctrl-sも解放されます。一時停止/再開を再度有効にするには、次のことができます
$ stty ixon ixoff
M-> ... moves to end of history
M-< ... moves to start of history
あなたの左のaltキーはおそらくメタキーです。
Readlineディレクティブの詳細については、man readline。