bash中的类似zsh的历史

时间:2017-02-17 13:39:55

标签: bash zsh

我非常喜欢zsh的历史记录自动填充功能。也就是说,当我按下时,我得到上一个命令。当我输入emacs并按下时,我会收到我用过的最后一个emacs命令。当我输入git并按下时,我得到了我使用的最后一个git命令。当我尝试在bash中执行此操作时,它只是转到我使用的最后一个通用命令。从本质上讲,我希望能够半键入命令并按下以获取我使用的最后一个命令,该命令与我到目前为止输入的命令相匹配。我不知道如何在bash中实现这一点。我不能在这个系统上使用zsh,所以可以在bash中复制这个功能吗?

2 个答案:

答案 0 :(得分:7)

向上箭头绑定到previous-history命令。您希望将其重新绑定到history-search-backward(默认情况下为未绑定)。您可以检查当前绑定的previous-history键:

$ bind -p | grep previous-history
"\C-p": previous-history
"\eOA": previous-history
"\e[A": previous-history

在我的情况下,后两个都表示向上箭头(确切的转义序列可能因终端而异,或者取决于终端所处的模式,但这两个是相当标准的)。特别是因为Control {P仍然可以使用previous-history,所以更改向上箭头的行为是安全的。

将其添加到您的.inputrc文件中(必要时创建文件):

"\e[A": history-search-backward
"\eOA": history-previous-history

或者,您可以在bind

中添加来电.bashrc
bind '"\e[A": history-search-backward'
bind '"\eOA": history-search-backward'

您可能还希望类似地将history-search-forward绑定到向下箭头键\e[B\eOB

答案 1 :(得分:3)

您可以使用 ctrl + R 搜索历史记录。

首次按此按钮时,提示将会更改,您可以在历史记录中输入要搜索的字符。新提示会忽略在上一个提示中输入的字符,并在匹配历史记录中的内容时覆盖它们。

它将显示与输入匹配的最后一个命令,您可以再次按 ctrl + R 将结果从最新的导航到最早的。

当您找到感兴趣的条目时,您可以按 Enter 执行它,或按左箭头或右箭头返回标准提示以编辑命令行。按向上或向下箭头将返回标准提示,但向前或向后导航历史记录,我发现比任何事情都更令人困惑。