Bash相当于Tcsh的ESC-p从你目前输入的内容开始跳转到命令

时间:2010-06-21 17:09:32

标签: bash shell keyboard-shortcuts tcsh

我最近做了从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吗?

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按下跳转到下一个匹配。