如何禁用鱼壳的猜测自动完成功能?

问题描述

在bash中,如果您键入以下内容

ls /etc/abc

然后按<tab>,它会发出哔声,并且什么也不做,基本上是让您知道它无法弄清楚如何完成它。对于该特定命令,不存在以/etc/abc开头的文件

在鱼中,它将使用一些复杂的算法来弄清楚它的含义,并且可以更改您完全键入的内容,有可能将ls /etc/abc更改为ls /etc/fstab,因为在某个时候过去,您可能输入了ls /etc/fstab

我确定它不是那么随意,但事实是,它删除了我的/etc/abc arg,并用它认为的含义替换了它。有时,我在一个字符中犯了一个错误,而不是像在bash中那样回过头来纠正错误,打<tab>取代了我写的全部内容,迫使我重写了整个arg。

我可以看到有人可能会喜欢此功能,但是对我来说,这真是令人讨厌。也许我只是习惯扑面而来。

有没有办法让鱼把它关掉,所以它永远不能代替我写的东西?如果我写了/etc/abc,请按<tab>,但它无法找出以此开头的补全,就别管它了。不要用最好的猜测代替它。

我什至不知道该功能名称。它甚至有一个名字,还是只是鱼类自动完成的无名部分?

更新:

我刚遇到的一个真实例子。

我在当前目录中有一个名为lib.py文件。我键入git difftool li并按<tab>。它用git difftool templates/nxt_connect/dish_controls.html代替了我写的内容,立即使我想刺杀某人,因为我必须删除它为我有用地填充的超长字符串,然后重试。更糟糕的是,我假设我输入了错误内容,因此我将尝试完全相同的操作,并最终获得完全相同的结果,只是意识到fish没有内置{{1}的完成文件},这就是为什么它甚至不检查我当前目录中文件的原因。

解决方法

并且可以更改您完全键入的内容,可能将ls / etc / abc更改为ls / etc / fstab,

鱼不会将/etc/abc更改为/etc/fstab

将要执行的操作是模糊匹配您的命令,例如/etc/ft将与/etc/fstab匹配,但这仅是因为“ f”和“ t”都以该顺序位于“ fstab”中,并且仅当这是唯一可能的匹配时。

/etc/abc不会发生这种情况,因为这与/etc/fstab不匹配。

由于过去的某个时候,您可能输入了ls / etc / fstab。

在这种情况下,不会考虑历史记录。它实际上仅将历史记录用于自动提示-您输入内容的灰色继续,但这仅会进行前缀匹配。

有没有办法让鱼把它关掉,所以它永远不能代替我写的东西?

鱼没有提供更改此行为的选项。

下一个发布的鱼(3.2版)将提供“撤消”功能(默认情况下绑定到ctrl + z),因此您可以通过按此键来撤消任何匹配项。

这仅仅是鱼的自动完成的无名之物吗?

模糊匹配。