我非常喜欢zsh的历史自动完成功能.也就是说,当我按下时,我得到上一个命令.当我输入emacs并按下时,我得到了我用过的最后一个emacs命令.当我输入git并按下时,我得到了我使用的最后一个git命令.当我尝试在bash中执行此操作时,它只是转到我使用的最后一个通用命令.从本质上讲,我希望能够半键入命令并按下以获取我使用的最后一个命令,该命令与我到目前为止输入的命令相匹配.我不知道如何在bash中实现这一点.我不能在这个系统上使用zsh,所以可以在bash中复制这个功能吗?
向上箭头与previous-history命令绑定.您希望将其重新绑定到history-search-backward(默认情况下为未绑定).您可以检查previous-history当前绑定的键:
$ bind -p | grep previous-history
"\C-p": previous-history
"\eOA": previous-history
"\e[A": previous-history
Run Code Online (Sandbox Code Playgroud)
在我的情况下,后两个都表示向上箭头(确切的转义序列可能因终端而异,或者取决于终端所处的模式,但这两个是相当标准的).特别是因为previous-history仍然可以使用Control-P,所以可以安全地改变向上箭头的行为.
将其添加到您的.inputrc文件中(如有必要,创建文件):
"\e[A": history-search-backward
"\eOA": history-previous-history
Run Code Online (Sandbox Code Playgroud)
或者,您可以添加bind来自您的电话.bashrc:
bind '"\e[A": history-search-backward'
bind '"\eOA": history-search-backward'
Run Code Online (Sandbox Code Playgroud)
您可能还希望类似地绑定history-search-forward到向下箭头键,\e[B和\eOB.
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |