如何在反向搜索期间进行部分选择

如何在反向搜索期间进行部分选择

通常我使用Ctr+R它来启用反向搜索,并重复Ctr+R浏览命令历史记录,然后点击Tab选择命令。

然而,有时我可能想做部分选择,例如

(reverse-i-search)`sh /p': sh /path/to/the/a_script.sh

我已经输入了sh /p,并且我的历史记录是sh /path/to/the/a_script.sh,但我知道我b_script.sh在同一路径下有另一个文件,我想用 来运行命令b_script.sha_script.sh在这种情况下,我必须Tap先 ,然后更改a_script.shb_script.sh手动。

是否可以进行部分选择?例如,仅以sh /path/to/the/某种方式选择部分。

答案1

并非如此。Ctrl+R搜索您的历史记录,并允许您检索之前输入的命令。

有一些有用的 bash 快捷方式可以加快编辑速度:Alt+ F/B(或者更直观的是Ctrl+ Left/Right)向前或向后跳转一个单词,而Ctrl+K则从光标删除到末尾。

答案2

如果你知道你想要重复的命令是如何开始的(在你的情况下sh),你可以这样做:

!sh:s/a_/b_

或者更一般地,如果您恰好记得命令中包含的一些字符串,而不是最开头的字符串,则使用: !?string?:s/old/new 以便您可以引用历史列表中当前位置之前的最新命令,string并对其进行编辑以替换某些部分。因此,您可以使用以下类似方法修复该命令:

!?script?:s/a_/b_

它的局限性在于它只能用于重复和编辑最近输入的命令(它会触发历史记录中与!和之间的模式匹配的最后一个条目:),但如果您需要反向搜索整个历史记录,那么 reverse-i-search 是我所知道的唯一方法。

相关内容