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


15

bash命令行上,给我上一个命令。在numpy或的命令行上matlab,当我键入几个字符时,会给我先前输入的命令,这些命令以这些字符开头。如何在中完全启用此行为bash

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

Answers:


18

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

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

将它们绑定到您的中.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


10

将以下内容添加到〜/中的.inputrc中,以执行建议的操作:

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

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

export INPUTRC=~/.inputrc

您能否详细说明为什么要进行此“导出”?
texnic

2

加上一个“!” 到您要查找的命令。如果您希望替换向上和向下箭头的功能,则可以修改inputrc文件(如其他答案所示)。

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

!comm

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

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

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

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

这可能是/programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line的副本


其他答案更正确地回答了我的问题,但感谢您提供指向SO的指针(另请参见meta.stackexchange.com/q/4708/172266)。
gerrit 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.