在 中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