我正在寻找一种方法,使我的 ubuntu bash shell 具有与 FreeBSD 中的 csh 相同类型的历史记录完成。
行为是,在命令行上,如果我开始输入某些内容,并点击向上/向下箭头,则会在历史记录中搜索以我开始输入的内容开头的命令
例如,如果历史包含
1 ls -al
2 yes
3 ls -altr
4 ls
5 history
当我输入ls
并点击向上/向下箭头时,它会循环ls
ls -al
显示ls -altr
我如何在 ubuntu bash 中实现相同的行为?
答案1
您应该能够通过重新绑定 bash 配置文件中的箭头键来执行此操作。默认情况下,向上和向下箭头绑定到previous-history
和next-history
;我相信您想要的行为是history-search-backward
和history-search-forward
,默认情况下不绑定到任何键。
以下命令将执行重新绑定:
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
(假设您的终端仿真器执行(其中一个)箭头键的标准映射。)
previous-history
和next-history
默认情况下也绑定到ctrl+P和但在我的快速实验中和ctrl+N之间似乎存在轻微的互操作性问题这可能只是我安装的 版本的一个问题。next-history
history-search-backward
readline
bash 还提供反向增量历史搜索(ctrl+R;ctrl+S是正向增量搜索),这在某种程度上是等效的,但不会将历史搜索固定在行首。(另外,您必须记住先输入它。)