Ctrl我保留了相当长的 bash 历史记录,有时当我使用 bash 反向搜索功能( + )搜索某些内容时r,我最终会到达搜索历史记录的开头,但仍然没有找到我需要的内容,然后我想回到末尾的历史文件。一种选择是使用向前搜索功能(Ctrl+ s),该功能更接近历史记录的末尾或执行#
,但是是否还有键盘快捷键可以直接移动到bash历史记录的末尾?
答案1
有 readline 函数end-of-history
,默认映射到M- >,但如果在反向搜索期间使用它会退出反向搜索提示。
一个可能的解决方法/技巧
开始字符串搜索
相反,要使用反向搜索,您可以使用history-search-backward
and history-search-forward
(默认未映射),将它们映射到up/down(非常有用).inputrc
:
# up-down arrow to search in history
"\e[A":history-search-backward
"\e[B":history-search-forward
因此,输入后您可以按up
(而不是Ctrl+ R)进行反向搜索,当您想返回到历史记录的末尾时,可以end-of-history
按(M- >)使用该功能
这边走“搜索字符串必须匹配历史行的开头,“因此,如果您搜索ls -ltr
,则必须键入ls
然后按 up按键。
子串搜索
如果你想 ”搜索字符串可以匹配历史行中的任何位置,“你必须使用history-substring-search-forward
and history-substring-search-backward
:
# up-down arrow to search in history
"\e[A":history-substring-search-backward
"\e[B":history-substring-search-forward
这样,如果您搜索ls -ltr
,您可以键入ls
,但也可以ltr
在按 之前键入up。
参考:Bash 参考手册 – 历史命令。