Zsh

zsh 類似 tcsh 的歷史導航

  • May 20, 2016

tcsh中,\ePand\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.

zshcontrib在called中有記錄的函式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

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