zsh 類似 tcsh 的歷史導航

zsh 類似 tcsh 的歷史導航

在 中tcsh\eP\eN命令考慮當前行的空白規範化前綴,而不僅僅是第一個單字。

例如,如果我的歷史記錄包含

git pull upstream feature-dancing-pigs
git clone

我輸入

% git pull

然後打\eP進去tcsh,我明白了

% git pull upstream feature-dancing-pigs

如果我輸入\ePzsh我會得到一個與命令相符的歷史記錄項

% 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

相關內容