配置向上箭头以浏览具有相同初始字符的命令,而不是所有先前的命令

配置向上箭头以浏览具有相同初始字符的命令,而不是所有先前的命令

bash命令行上,给我上一个命令。在ipython或 的命令行上matlab,当我输入几个字符时,给我以前输入的以这些字符开头的命令。我怎样才能在 中启用这种行为bash

我知道搜索命令行历史记录的更高级方法,但有时简单的方法更方便。

答案1

您正在寻找的 readline 命令是以下history-search-*命令:

历史搜索向前
在历史记录中向前搜索当前行开头和当前光标位置(点)之间的字符串。这是非增量搜索。
历史搜索向后
在历史记录中向后搜索当前行开头和该点之间的字符串。这是非增量搜索。

将它们绑定在您的 中.inputrc,如下所示:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

将允许您输入命令的第一个字符,然后使用UpDown键仅在命令中移动以.bash_history该字符串开头的那些命令。

例如,输入viUp会将您带到上一个以 开头的命令vi,例如vim somefile。输入Up将带您到下一个上一个实例,依此类推。

您可以在此处阅读有关所有 readline 绑定的更多信息: http://linux.about.com/library/cmd/blcmdl3_readline.htm

答案2

将以下内容添加到 ~/ 中的 .inputrc 中,以执行您的建议:

"\e[B": history-search-forward
"\e[A": history-search-backward

也许您可能还想将以下内容添加到您的 .bash_profile 中:

export INPUTRC=~/.inputrc

答案3

前面加一个“!”到您正在寻找的命令。如果您希望替换向上和向下箭头的功能,则可以修改 inputrc 文件(如其他答案所建议的那样)。

如果“command”是您要搜索的命令,请输入:

!comm

您应该得到“命令”作为输出。

同样,如果您想要查找包含该命令的一部分(但可能不以其开头)的命令,请按 ctrl+r,然后键入该命令的一部分。

您还可以输入“tab”来自动完成输入的文本(这也包括文件)。如果您要查找的命令不在您的历史记录中(或者您没有历史记录文件),这非常有用

您可以在此处阅读有关“掌握”历史文件的更多信息: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

这可能是以下内容的重复https://stackoverflow.com/questions/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line

相关内容