fish - 你如何禁用鱼壳的猜测自动完成功能?
问题描述
在 bash 中,如果您键入以下内容:
ls /etc/abc
然后点击<tab>
,它会发出哔哔声,什么也不做,基本上让你知道它无法弄清楚如何完成它。/etc/abc
在该特定命令的情况下,不存在以 开头的文件。
在 fish 中,它会使用一些复杂的算法来找出它认为您可能的意思,并且可以完全改变您输入的内容,可能将您更改ls /etc/abc
为ls /etc/fstab
,因为在过去的某个时间点,您可能输入了ls /etc/fstab
.
我敢肯定这不是那么随意,但事实是,它删除了我的/etc/abc
arg,并用它认为我的意思代替了它。有时,我在一个字符上犯了一个错误,而不是像在 bash 中那样返回并修复我的错误,而是点击<tab>
替换了我写的整个内容,迫使我重写整个 arg。
我可以看到有些人可能会喜欢这个功能,但对我来说,这非常烦人。也许我只是习惯于抨击。
有没有办法让鱼把它关掉,所以它永远不会取代我写的东西?如果我写了/etc/abc
, hit <tab>
,但它无法找出以它开头的完成,那就别管它了。不要用最好的猜测代替它。
我什至不知道这个功能叫什么。它甚至有名字,还是只是鱼自动完成的无名部分?
更新:
我刚刚遇到的一个真实例子。
我在当前目录中有一个名为lib.py
. 我输入git difftool li
并点击<tab>
。它用 替换了我写的内容git difftool templates/nxt_connect/dish_controls.html
,立即让我想刺伤某人,因为我必须删除它为我填充的超长字符串,然后再试一次。更糟糕的是,我假设我输入了错误的东西,所以我会尝试完全相同的东西,并最终得到完全相同的结果,只是意识到 fish 没有内置的完成文件git difftool
,这就是为什么它甚至不检查我当前目录中的文件。
解决方案
并且可以完全更改您输入的内容,可能将您的 ls /etc/abc 更改为 ls /etc/fstab,
鱼不会/etc/abc
变/etc/fstab
它将做的是模糊匹配您的命令,因此 eg /etc/ft
will match /etc/fstab
,但这只是因为“f”和“t”都按该顺序在“fstab”中,并且只有当它是唯一可能的匹配时。
这不会发生/etc/abc
,因为那不匹配/etc/fstab
。
因为在过去的某个时候,您可能输入了 ls /etc/fstab。
在这种情况下,它没有考虑历史。它实际上只将历史记录用于自动建议 - 您键入的内容的灰色延续,但这仅用于前缀匹配。
有没有办法让鱼把它关掉,所以它永远不会取代我写的东西?
Fish 没有提供改变这种行为的选项。
下一个 fish 版本(3.2 版)将提供一个“撤消”功能(默认绑定到 ctrl+z),因此您可以通过按下它来撤消任何匹配。
它只是 fish 自动补全的一个无名部分吗?
模糊匹配。
推荐阅读
- javascript - 如何在运行会话(WebRTC、RTCMultiConnection)期间重新启动屏幕共享?
- asp.net - 在请求标头中输入 JWT 令牌时,自定义授权属性无法工作
- google-bigquery - 如何从 BigQuery 读取 Google Storage 存储桶中的每个文件并为存储桶中的每个文件创建一个表?
- python - 是否可以在熊猫的标题上方添加一行
- excel - 比较两个单元格值并仅突出显示文本
- reactjs - 从外部组件反应测试库触发回调
- python - 如何在 django webapp 中运行一些网页抓取脚本
- json - 未调用自定义 UnmarshalJSON
- scala - 更改数据块中的 scala 代码以根据电子邮件发送分组数据
- asp.net-core - 内存缓存的 IDistributedCache 实现在哪里?