我非常喜欢zsh的历史自动完成功能。当我按向上箭头时,会出现上一个命令。当我输入emacs
并按向上箭头时,会出现我最后一次使用的emacs命令。当我输入git
并按向上箭头时,会出现我最后一次使用的git命令。但是在bash中,它只会返回上一个通用命令。基本上,我希望能够输入部分命令并按向上箭头,以获取最后一次使用的与我已输入的相匹配的命令。我不知道如何在bash中实现这一点。由于无法在此系统上使用zsh,因此是否可以在bash中复制此功能?
向上箭头被绑定到previous-history
命令。您想将其重新绑定到history-search-backward
(默认未绑定)而不是previous-history
。您可以检查当前绑定哪些键到previous-history
:
$ bind -p | grep previous-history
"\C-p": previous-history
"\eOA": previous-history
"\e[A": previous-history
在我的情况下,最后两个都代表上箭头(确切的转义序列可能因终端而异,或取决于终端处于什么模式,但这两个是相当标准的)。特别是由于使用Control-P 仍然可以访问 "previous-history",因此更改上箭头的行为是安全的。"\e[A": history-search-backward
"\eOA": history-previous-history
或者,您可以从您的.bashrc
中添加调用bind
:
bind '"\e[A": history-search-backward'
bind '"\eOA": history-previous-history'
您也可以将 history-search-forward
绑定到向下箭头键 \e[B
和 \eOB
。
\eOB
绑定是history-next-history
吗? - Hal Tema
然后按上箭头,出现的文本将是 emacs -nw .inputrc
,但光标将位于 ema
的末尾而不是行末。这个问题能修复吗? - Hal Tnext-history
是 previous-history
的“向下”版本。就光标定位而言,Control-E 绑定到 end-of-line
,因此您可以快速移动到那里,但我认为没有自动化的方法。 - chepner"\eOA": history-previous-history
是一个打字错误? - Weekendbash
比zsh
简单得多,我猜应该是“不行”(也许可以使用可编程完成的非常危险的技巧)。 - Gert van den Berg
command #useful
,当您需要时,通过 CTRL+R 键输入#useful
。 - Ans