我最近做了从tcsh到bash的长期过期。 我唯一想念的是tcsh的 ESC + p 功能: 开始键入一个命令,然后按 ESC + p (我实际上找到了等效的ctrl- [p更容易键入],它跳转到历史记录中的最新命令从你到目前为止输入的内容开始。
也许最好的答案就是习惯于打击 Ctrl + r ,但到目前为止我并不喜欢它。 我经常开始输入一个命令然后发生在我之前我发过它。 使用tcsh的功能,我可以执行 ESC + p + 输入重新发出它。这是如此之快,以至于我通常不会在超过2个命令之前使用向上箭头。
我发现它特别好的地方的一个例子: 长命令通常以点开头,因为它们的格式为
./myprogram.pl -lots -of -args -and -switches
在tcsh中我会发出这样的命令,然后可能是ls,less,tail,whatever,然后重新发出长命令,4个键:dot,escape,p,enter。
我怎样才能在Bash中做到这一点?或者,为了使其具体化,bash中最少的击键次数是“重复以点开头的最后一个命令”?它可以匹配或击败tcsh的4吗?
答案 0 :(得分:9)
将其添加到您的~/.inputrc
文件中:
"\e[5~": history-search-backward
"\e[6~": history-search-forward
这将使 PageUp 像tcsh的 Esc + p , PageDown 将在列表中前进。
您可以绑定\ep
。如果使用 PageUp / PageDown ,您可能需要查看键盘/终端产生的字符序列。只需按 Ctrl + V 然后 PageUp ,如果它与^[[5~
相同,您将看到\e[5~
。< / p>
答案 1 :(得分:9)
我和你在同一条船上,需要从tcsh切换到bash。
我刚创建了一个新的〜/ .inputrc文件,如下所示,一切都很棒!
$ cat ~/.inputrc "\ep": history-search-backward "\en": history-search-forward
答案 2 :(得分:2)
嗯,你可以做到
!.
这是三个字符(包括Enter)。当然,在一般情况下,您可以使用您选择的唯一标识前缀替换点。
答案 3 :(得分:2)
我个人更喜欢ctrl-r - 它是历史上的互动搜索 - 检查它,也许你会喜欢它。随后的ctrl-r按下跳转到下一个匹配。