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履歴で逆検索を実行でき、入力を開始すると一致するコマンドが提案として表示されます。