FreeBSD csh 风格历史记录在 bash 中自动完成

FreeBSD csh 风格历史记录在 bash 中自动完成

我正在寻找一种方法,使我的 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-historynext-history;我相信您想要的行为是history-search-backwardhistory-search-forward,默认情况下不绑定到任何键。

以下命令将执行重新绑定:

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

(假设您的终端仿真器执行(其中一个)箭头键的标准映射。)

previous-historynext-history默认情况下也绑定到ctrl+P和但在我的快速实验中和ctrl+N之间似乎存在轻微的互操作性问题这可能只是我安装的 版本的一个问题。next-historyhistory-search-backwardreadline

bash 还提供反向增量历史搜索(ctrl+R;ctrl+S是正向增量搜索),这在某种程度上是等效的,但不会将历史搜索固定在行首。(另外,您必须记住先输入它。)

相关内容