場合によってはCtrlR、コマンド履歴を検索するときにその項目が履歴にあることがわかっているにもかかわらず、目的の項目が見つからないことがあります。私はすでにその項目を通過しているので、別の方向に移動するには別のコマンドを使用する必要があると思います。最後に到達するとループ(ループを再開)して履歴全体を検索するコマンドがありますか?
ベストアンサー1
Alt+を使用して>履歴の終わりに戻って再検索することができますが、おそらくあなたはそれを知っていて、それはあなたが望むものではないかもしれません。
残念ながら、私はそれを包む方法がないと思います。
man bash
またはでこれについて何も見ることができませんman readline
。
マクロを作成しようとすることができますが、readline
現在どの歴史的線にあるかを示す変数はありません。
それに加えて、実行可能な選択肢を見つけることができるいくつかの提案は次のとおりです。
Ctrl端末が+を送信するように設定されている場合S(たとえば、runを介してstty stop undef
)、Ctrl単に+を押して方向を変更できますS。
history | grep <whatever>
その後、入力!<number from left column>
して実行できます。
入力が長すぎる場合は、入力を保存する機能をいくつか作成してください。
hgrep() {
history | grep "$@"
}
設定history-search-backward
とhistory-search-forward
。
たとえば、ls
Alt+ P、Alt+ P、Alt+はすべてのコマンドをP 後ろに検索します。ls
また、別のショートカットを押して方向を変更することもできます。たとえば、最も古いコマンドを使用している場合は、Alt+キーを+Pキーに切り替えることができます。AltN
/etc/inputrc
これをあなたのまたは.inputrc
forに入れるbash
:
$if mode=emacs
"\ep": history-search-backward
"\en": history-search-forward
$endif
これは.zshrc
あなたのものですzsh
:
bindkey -M emacs '^[p' history-beginning-search-backward
bindkey -M emacs '^[n' history-beginning-search-forward
さらに一歩進んで、上向き矢印を使用してこれを行うこともできます。
最後に、コマンドは履歴に記録されていますか?HISTCONTROL
あるいは、設定によってHISTIGNORE
無視されるものであっても、HISTSIZE
設定によって無視されるものであっても、?によって無視されるものであってもよい。