最近bashからzshに切り替えました。 bashでは、以前に実行されたコマンドを見つけるために使用した1つの方法(再帰検索以外)はhistory | grep whatever
、ここでwhatever
は覚えているコマンドのビットです。
Zshでは、これは機能しません。 history
は、たとえ.zsh_history
ファイルには多くのエントリが含まれています。
grep
での検索に適した履歴全体を出力するにはどうすればよいですか?
履歴はzshエントリの範囲を[first] [last]
引数として受け入れます。そのため、それらすべてを取得するにはhistory 0
を実行します。
Zshのヘルプを取得するには(少なくとも念頭に置いて)、historyコマンドにAlt-h
と入力すると、組み込みのヘルプが表示されます。
受け入れられた答えは正しいですが、外部のgrep
バイナリを呼び出して検索する必要がない必要がないことに注意してください。その機能が組み込まれているので、この関数を_.zshrc
_で定義しています。
_histsearch() { fc -lim "*$@*" 1 }
_
ノート:
fc
は、対話型の履歴を制御するzshビルトインです。 history
は_fc -l
_と同等です。
_-m
_フラグにはパターンが必要であり、引用符で囲む必要があります。
_-i
_フラグはタイムスタンプを追加します。
fc
には、さらに多くのトリックがあります(たとえば、検索を現在のセッションの内部履歴に制限します)。 zshbuiltins(1)
のマニュアルページまたは 公式ドキュメント を参照してください。