有两种现有方法可以轻松获得此类内容:
- zsh 的历史子串搜索插件
- bash的
ctrl+r
模式
zsh 的问题是它不在很多系统上。 bash 实现的问题是它要求我先按 ctrl+r。另外,我知道history-search-backward
bash,但它是锚定到命令的开头而且没有那么强大。
我希望有一种方法可以在 bash 中绑定向上键来实现它:
- 复制当前输入的命令缓冲区
- 进入
ctrl+r
模式 - 在该模式下粘贴当前类型的命令缓冲区
并在随后按向上键时
- 点击
ctrl+r
(搜索下一个上一个)
答案1
Bash 4.4 有history-substring-search-backward
可以执行此操作的可绑定命令。来自新闻文件:
2. New Features in Readline
<...>
b. There are new bindable commands to search the history for the string of
characters between the beginning of the line and the point
(history-substring-search-forward, history-substring-search-backward)