我发现自己在做诸如键入命令名称的最后部分之类的事情,因为它的开头部分与其他命令一起完成。当然,大多数其他 shell 甚至还不能以这种方式完成任务。
无论如何,举个例子,我的 $PATH
中有一个名为 git-verbose-status
或类似名称的脚本。与许多其他以 git-
为前缀的一样。随着前缀命名空间的填充,区分它们变得越来越困难。 认为“git”真的很有意义,因为我出于某种原因命名了我的程序。
这让我开始思考。可以对已键入的字符串使用最近使用的排序以执行匹配。这应该比按字母顺序完成更有帮助,因为我相信它通常是这样做的。
它可能只是对命令历史记录的简单反向扫描。
最佳答案
我认为the history substring search做你想做的事;我已经设置了以下键绑定(bind)
bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search
bindkey '^P' up-line-or-search
bindkey '^N' down-line-or-search
这样我就可以开始输入前一个命令的任何部分,按向上箭头或 Ctrl-P 并以相反的顺序从我的历史记录中的任何位置获取与该写入部分匹配的命令 - 正如您所描述的。
编辑:当然,如果您不想安装历史搜索插件,C-r
也会匹配您历史中的完整命令行。
关于shell - Zsh 选项卡补全 : Is there any plugin or feature that can allow for a MRU tab-completion scheme?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180712/