Zsh

如何在 zsh 的提示符下搜尋已輸入文本的歷史記錄?

  • November 12, 2021

在 zsh 中,我知道我可以使用Ctrl+搜尋歷史記錄r。但是,通常我開始直接在提示符下鍵入命令,但隨後意識到我應該搜尋歷史記錄。當我點擊Ctrl+r時,它會顯示一個空白的歷史搜尋提示,如下所示:

歷史搜尋提示未預先填寫

請注意我的提示中有文本,但歷史搜尋提示中沒有。如何使用提示中已有的文本開始歷史搜尋,所以它看起來像這樣:

預填歷史搜尋提示

您可以使用zle 的history-search功能:

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

Up這將和(調整您自己的轉義序列)綁定Down到歷史搜尋,向後和向前,基於已經在提示中輸入的內容。

因此,如果您輸入 “vim” 並點擊Up,zsh 將僅針對以 “vim” 開頭的那些命令向後遍歷您的歷史記錄。

您還可以使用history-search-end/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

引用自:https://unix.stackexchange.com/questions/97843