Terminal
升級 oh-my-zsh 後歷史搜尋損壞
幾天前我做了 oh-my-zsh 的自動升級。現在我過濾的歷史記錄(輸入幾個字母和向上箭頭)不再有效。我沒有意識到我對它的依賴程度。
編輯:
例如,我曾經鍵入命令的幾個字母,然後按向上箭頭來搜尋我的歷史記錄:
➜ scratch git:(develop) up # press ↑ arrow key
提示更改:
➜ scratch git:(develop) upupdowndownleftrightleftrightbabastartselect # 3 key presses
我不知道我執行的是什麼版本。目前:
➜ scratch git:(develop) echo $ZSH_VERSION 5.0.2
以下是我認為使增量搜尋工作的 .zshrc 文件中的行:
# Set bindkeys to start search from last word bindkey '\e[A' history-beginning-search-backward bindkey '\e[B' history-beginning-search-forward
游標鍵有兩個事實上的標準轉義序列;不同的終端,甚至是不同模式的同一個終端,都可以發送一個或另一個。例如,xterm在“應用程序游標模式”中發送,
\eOA
否則。因為你可以同時遇到and等。Up``\e[A``Down``\e[B``\eOB
一種解決方案是複制您的綁定:每當您綁定一個轉義序列時,將另一個轉義序列綁定到同一命令。
bindkey '\eOA' history-beginning-search-backward bindkey '\e[A' history-beginning-search-backward bindkey '\eOB' history-beginning-search-forward bindkey '\e[B' history-beginning-search-forward
另一種方法是始終綁定一個轉義序列,並讓另一個轉義序列注入另一個。
bindkey '\e[A' history-beginning-search-backward bindkey '\e[B' history-beginning-search-forward bindkey -s '\eOA' '\e[A' bindkey -s '\eOB' '\e[B'
我不知道為什麼升級 oh-my-zsh 會影響 shell 從終端接收的轉義序列。也許新版本會執行一些不同的終端初始化,以啟用應用程序游標模式。