
在 中tcsh
,\eP
和\eN
命令考慮當前行的空白規範化前綴,而不僅僅是第一個單字。
例如,如果我的歷史記錄包含
git pull upstream feature-dancing-pigs
git clone
我輸入
% git pull
然後打\eP
進去tcsh
,我明白了
% git pull upstream feature-dancing-pigs
如果我輸入\eP
,zsh
我會得到一個與命令相符的歷史記錄項
% git clone
我想配置zsh
以模擬該tcsh
行為。是否可以?
我嘗試過zsh
使用預設的 emacs 鍵配置和顯式
bindkey "\eP" history-search-backward
事實證明
bindkey "\eP" history-beginning-search-backward
^[
確實具有我最初只是用來代替 的預期行為\e
。
答案1
zshcontrib
呼叫中記錄了一個函數up-line-or-beginning-search
,您可以透過運行來查看它。
man zshcontrib | less '+/^\s*up-line-or-beginning-search'
這些小部件類似於內建函數up-line-or-search 和down-line-or-search:如果在多行緩衝區中,它們在緩衝區內向上或向下移動,否則它們搜尋與行開頭相符的歷史行。然而,在這種情況下,他們會搜尋一條線匹配當前行直到當前遊標位置,以歷史開始向前搜尋的方式,而不是該行的第一個單詞。
ZLE FUNCTIONS
如果您查看本節頂部給出的說明man zshcontrib
ZLE 函數
小工具
這些函數都實作了使用者定義的 ZLE 小工具(請參閱 zshzle(1)),這些小工具可以綁定到互動式 shell 中的按鍵。要使用它們,您的 .zshrc 應包含以下形式的行
autoload function
zle -N function
就我個人而言,我已遵循上述說明,但我懷疑現在您可能不需要...~/.zshrc
# register the function with the autoloader
autoload -U up-line-or-beginning-search
# define new zle widget
zle -N up-line-or-beginning-search
# bind UP key
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-beginning-search