在 bash 中,Ctrl+r命令非常有用,我输入Ctrl+ r whatever
,它会搜索历史记录中含有单词 的命令whatever
。但是,如果我输入whatever
并意识到我想搜索该单词并按下Ctrl+,r什么也不会发生。
有没有一种方法,按下一个键并使其表现得好像我输入了Ctrl+r whatever
而不是whatever
Ctrl+ r?
我的 中有以下内容.inputrc
:
"\C-p": history-search-backward
但这只有当行首相同时才有效。
答案1
您可以轻松地使用已经输入的内容搜索 bash 的历史记录。
假设您刚刚输入curl -I http://superuser.com
并忘记先输入Ctrl+ r:
$ curl -I http://superuser.com
如果你想对自己的历史记录进行 i-search,转到行首第一的(Ctrl+ a),输入 i-search(Ctrl+ r)并输入Ctrl+ y。这将使用您已输入的全部文本内容进行搜索:
(reverse-i-search)`curl -I http://superuser.com': curl -I http://superuser.com/faq
或者,您可以使用Ctrl+w而不是Ctrl+y来仅使用刚输入的文本的第一个单词进行搜索:
(reverse-i-search)`curl': curl -I http://superuser.com/faq
全部绑定到单个键
如果您想通过一次按键完成所有这些操作,可以将单个键绑定到键盘宏。如果您想使用,例如,F12运行:
$ bind '"\e[24~":"\C-a\C-r\C-y"'
这将持续整个会议。
使其永久化
只需在您的中定义宏~/.inputrc
:
"\e[24~":"\C-a\C-r\C-y"
注意这里我们忽略单引号。
你可能会发现这个答案有用。
答案2
挽救四次进攻:
Ctrl-R
通过添加以下内容来避免第二次.bashrc
:(或者,如果您愿意,可以添加到您的.inputrc
):
bind '"\er":"\C-a\C-r\C-y\C-r"' # alt-r = ctr-a ctr-r ctr-y ctr-r
这将映射ALT-R到CTR-A CTR-R CTR-Y CTR-R
描述:
- ALT-R:绑定键。另一个不错的选择是
\C-xr
(CTR-X CTR-R) - 点击率:转到行首(记住所写的内容)
- CTR-R:开始反向搜索
- 点击率:粘贴什么点击率作为搜索的一部分被记住
- CTR-R:触发迄今为止的字符的反向搜索