web-dev-qa-db-ja.com

コマンドによるZSH履歴のフィルタリング

ZSHではcommandのようなことができると言われましたが、ヒットすると、指定されたコマンドに基づいて履歴がフィルターされます。しかし、これを試してみると、bashのように履歴が循環するだけです。これはデフォルトで無効になっていますか?

43
Guu

ヒットCtrl+R、いくつかの文字を入力すると、これらの文字を含む以前のコマンドが検索されます。Ctrl+ Rを押し続けると、以前の結果を続行できます。
bash、zsh(および私が推測する他のシェル)で動作します。

私が個人的に気に入っているのは、文字を入力してUpを押すと、同じ文字で始まる前のコマンドが表示されます。とてもパワフル、大好きです。
必要なキーをバインドする必要がありますhistory-beginning-search-backwardおよびhistory-beginning-search-forward

それだけでは不十分な場合は、zshには多くのオプションがあります。 Zsh Line Editor を調べて、教えてください。
bashの場合、それほど強力ではありませんが一般的です 履歴用のbashコマンド

76
lolesque

感嘆符を使用:

> !<starts-with this string>

それで始まるすべてのコマンドを上下に移動できます。 Vimでファイルを開く前のコマンドを取得するために、常に「!v」を使用します。

また、疑問符を使用して、文字列の先頭に一致する範囲を超えて検索することもできます。

> !?status

「git status」を見つけることができます。

10
zjaquish

percol を使用して、動的に履歴を検索およびナビゲートします Ctrl-r

  • インストールpercol:Sudo pip install percol
  • zsh-history-search コードスニペットを.zshrcファイルに追加します。

後 Ctrl-r、すべての履歴を同じウィンドウで確認できます。キーワードを(動的に)検索すると、そのリストが絞り込まれます。キーバインディング(このように emacs like config)を使用して、リストを上下に移動し、最終的に選択を行うことができます。

以下は、Sudo installを選択した状態で履歴にあるすべてのSudo make installコマンドを検索したものです。

percol_history_search_example

Enter 選択したコマンドを発行します。

5
mihai

これは fish で利用できる機能ですが、誰かが zsh plugin を作成したようです。標準のZSHでは使用できません。

5
Frost

Zshでvimキーバインドをアクティブにすると、viコマンドモードでvi-history-search-backward(/)を使用できます。

4
Konrad Haenel

キーバインドを追加したくない場合は、デフォルトで次を使用して検索できます Ctrl+R 後方に移動する& Ctrl+S 前進する。

キーショートカットのいずれかで検索を開始できます Ctrl+R または Ctrl+S

0
Swaps