zshプロンプトにすでに入力したテキストを入力して履歴を取得するにはどうすればよいですか?

zshプロンプトにすでに入力したテキストを入力して履歴を取得するにはどうすればよいですか?

Ctrlzshでは、+を使用して履歴を検索できることを知っていますr。しかし、プロンプトで直接コマンドを入力し始めて、レコードを検索する必要があることに気付くことがよくあります。Ctrl+ をクリックすると、r次の空の履歴検索プロンプトが表示されます。

過去の検索プロンプトが事前入力されていない

プロンプトにはテキストがありますが、履歴検索プロンプトにはありません。次のようにプロンプ​​トに既にあるテキストを使用して履歴検索を開始するには:

事前に入力された過去の検索プロンプト

答え1

あなたはそれを使用することができますずっとhistory-search機能:

bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward

これはプロンプトに入力された内容に基づいてバインドUpし(自分のエスケープシーケンスに合わせて調整し)、前後に履歴を検索します。Down

したがって、「vim」と入力してをクリックすると、Upzshは「vim」で始まるコマンドのみを検索し、履歴を逆方向に移動します。

zsh 履歴で目的のコマンドを選択した後は、次を使用することもできます。履歴検索が終了しました関数(通常は存在)は、次のように各行の末尾に/usr/share/zsh/functions/Zle/追加されます。-end

autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[[A" history-beginning-search-backward-end
bindkey "^[[B" history-beginning-search-forward-end

答え2

もう一つの便利なオプションはhistory | grep

エイリアスを割り当てます。

alias hg='history | grep'

hg whateverその後、Enterを入力して使用したコマンドを検索できます。

$ hg chmod                                                                                                       
 1309  chmod +x rotate_files.sh 
 1385  chmod +x rotate_files_270.sh 
 1512  chmod +x testy.sh 
 1528  chmod +x act_on_2_numbers.sh 
 2142  chmod +x ~/bin/display_tmux_pane_pwd.sh
 4532  chmod +x cat_files.rb 

このエイリアスを私のドットファイルに入れました。

答え3

使用する場合ああ、、行history-substring-searchに追加されましたplugins=(...)

その後、追加

bindkey "^[[A" history-substring-search-up
bindkey "^[[B" history-substring-search-down

。ラインの下のどこかにありますsource $ZSH/oh-my-zsh.sh。新しい端末を保存して起動するか、source ~/.zshrc現在の端末で実行します。

メモ: ^[[A私が使用している端末(キティ)と他の多くの端末の上矢印のエスケープシーケンス。選択した端末を確認するには、showkey -aエスケープ文字列を検索するキーを入力してから押します。

答え4

第三者ソリューション

1 - どのように動作しますか?zsh-autosuggestions

問題は、入力するすべてのコマンドに対してプラグインが許可または許可されない可能性がある提案をいくつか表示することです。試してみてコメントを送ってください。

2 - 中富士インストールして適切に設定した後、リバース検索履歴(デフォルトではfzf-history-widgetにバインドされています)を変更できるウィジェットを追加すると、コマンド履歴Ctrlrにいくつかのファジー検索が追加されます。私はそれを自動提案と組み合わせて使用​​しており、本当にうまくいきます。

基本ソリューション

プラグインがない場合はCtrlr履歴で逆検索を実行でき、入力を開始すると一致するコマンドが提案として表示されます。

関連情報