Zsh

歷史搜尋結束不起作用

  • November 11, 2020

我的~/.zshrc

setopt histignoredups
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

我希望向上箭頭填充與到目前為止鍵入的命令行匹配的最後一個命令行,

dotnet build
dotnet bin/Debug/netcoreapp2.2/MyProg.dll
dotnet build
dotnet bin<UP ARROW>

應填寫dotnet bin/Debug/netcoreapp2.2/MyProg.dll

但是,使用~/.zshrc我目前擁有的dotnet build.

看起來它只適用於第一個空間。

如何使向上箭頭選擇與迄今為止鍵入的命令行匹配的最後一個命令行?

長話短說:

bindkey "^[OA" history-beginning-search-backward-end
bindkey "^[OB" history-beginning-search-forward-end

你的終端真的發送^[[AUp嗎?我的發送^[OA。用你的.zshrc

darkstar% bindkey | grep '\^\[.A'
"^[OA" up-line-or-history
"^[[A" history-beginning-search-backward-end

按下具有預設綁定的Up發送並呼叫上一行。^[OA前一行以相同的單詞開頭只是一個巧合。按下可根據需要Esc [ A呼叫以開頭的上一行dotnet bin

要檢查終端發送的功能鍵或游標鍵,請按Ctrl+ ,V然後按鍵或鍵和弦。請注意,全屏應用程序通常使用與命令行應用程序不同的終端模式,其中某些鍵發送不同的轉義序列(應用程序游標鍵)。^[[A是常用的命令行轉義序列Up^[OA是常用的全屏轉義序列。

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