Bash 是否可以在fish shell中更改选项卡完成行为?

Bash 是否可以在fish shell中更改选项卡完成行为?,bash,shell,tabs,fish,Bash,Shell,Tabs,Fish,更新:此投诉与旧版本的fish有关——请参阅下面一位fish开发者的评论,描述了fish寻呼机行为的惊人改进,从而取消了此投诉。 鱼壳很酷——但是我讨厌标签完成的一个特性 我经常——几乎像一只紧张的蜱虫——在更改目录时键入路径时会点击{tab}{tab}。这使我可以使用{tab}检查某些路径的内容,同时解决当前击键允许解决的大部分路径消歧问题。这提供了一种很好的方法,可以快速发现最快的键组合,从而到达文件系统中的某个位置,而无需花很多心思,也无需事先知道各个目录的内容 另一方面,FISH解释了{

更新此投诉与旧版本的fish有关——请参阅下面一位fish开发者的评论,描述了fish寻呼机行为的惊人改进,从而取消了此投诉。

鱼壳很酷——但是我讨厌标签完成的一个特性

我经常——几乎像一只紧张的蜱虫——在更改目录时键入路径时会点击{tab}{tab}。这使我可以使用{tab}检查某些路径的内容,同时解决当前击键允许解决的大部分路径消歧问题。这提供了一种很好的方法,可以快速发现最快的键组合,从而到达文件系统中的某个位置,而无需花很多心思,也无需事先知道各个目录的内容

另一方面,FISH解释了{Tab}{Tab},我认为这是一种令人讨厌的方式。第一个{tab}列出了可能的完成,这很好。按下下一个选项卡,选择列表中的第一个完成项,并用完整的第一个完成项替换当前在该行中输入的路径的最后一部分——不管消歧状态如何。后续选项卡循环显示下一个选项。它与windows命令shell的功能类似

这比正常的bash行为糟糕得多

考虑一个深度嵌套的目录结构foo/bar/baz/a/b/c/

其中一些foo、bar、baz是空目录。Bash tab completion允许我键入cd foo/{tab}{tab}{tab}{tab}{tab}{tab}——无需考虑我点击tab的次数,无需考虑在点击tab之前对命令行条目当前状态的影响

正常情况下,所有这些目录都不会为空——但上面的方法仍然可以非常快速地发现我需要输入的最少字符数,以使其进入某个深度嵌套的路径

对于bash行为: cd some/unknown/dir/{tab}{tab}保证

(1) 我看到目录dir的内容/ (2) 到目前为止,通过我的命令可以明确表达的大部分内容已经完成,但没有更多

点击上面的两个选项卡后,我可能会看到如下内容:

abc123 bar123 baz123 bcd123 mnop123

可以执行以下操作:

{TAB}{TAB}(给我abc123,如果这是一个目录,则列出它的内容)

m{tab}{tab}(给我mnop123,如果它是一个目录,则列出它的内容)

假设我想要到达路径bcd123: b--显示我打字太快了,现在只显示了3个选项,我很容易得出结论,我只需点击“c”就可以消除对目标的歧义

b{tab}{tab}c{tab}{tab}(获取所需路径,如果是目录,则列出bcd123的内容)

菲什的模型更糟糕。b{tab}{tab}将完成到bar123的操作,我必须按tab未知的次数才能得到我想要的值,而且我无法将输入上下文恢复到目前为止我实际键入的字母(除了多次按backspace)。如果在这个目录中有一大堆以ba开头的东西,会发生什么呢?我完全搞砸了

一般来说,fish的模型更差:

  • 它不允许使用tab来完成嵌套路径——要对fish执行此操作,您需要在命令序列中的正确时间“/”,这需要心理反馈
  • 在大目录中发现消歧序列要困难得多
  • 一般来说,在点击标签之前需要“小心”,这会减少点击次数并降低其效用

有人请告诉我有一种方法可以改变鱼的行为,让它更像bash。。。fish很酷,但这种行为是无法使用的——如果没有办法改变这一点,我将不得不回到bash…

我赞扬你撰写了这篇详细而深思熟虑的文章,它应该得到同样详细而深思熟虑的回复

选项卡完成行为已在fish top of tree(尚未发布)中重写,并被称为“新寻呼机”。您可以看到设计目标和讨论。我在这封回信的底部写了一张便条,说明如何得到它

贝壳是个人的,就像任何个人的东西一样,合理化和辩解都不值得任何东西:你要么喜欢,要么不喜欢,我们甚至可能没有意识到影响我们感觉的因素。所以我能说的就是试试看,看看你的感受,然后(请)回来汇报

我在YouTube上贴了一张新寻呼机的照片。注意事项:1。只需输入更多,2即可取消菜单。它逐步“展开”(需要几个选项卡才能完全可见),即使有大量的完成,也不会以任何方式占据屏幕,并且易于搜索和导航,3。escape将始终取消它,并将您的命令行恢复到您键入的内容

让我逐一谈谈你的担忧:

“我必须按tab未知的次数才能得到我想要的值”。使用新的寻呼机,所选项目将在菜单中突出显示。这听起来很小,但我个人认为这会产生巨大的不同:点击tab的额外次数会被知道,而且因为你的手指已经过了tab,所以通常只需点击几次就比键入额外的字母容易多了。也可以使用箭头键进行导航

“我无法将输入上下文恢复到目前为止我实际键入的字母”。对于新的寻呼机,escape键正是这样做的。它很容易按下,因为escape就在标签的正上方,你们的手指就在那个里

“如果这个目录中有一大堆以ba开头的东西——我