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

相关内容