有没有办法在开始后取消完成?有时我会愚蠢地按 Tab 键来自动完成 make 目标(只是出于纯粹的懒惰),然后最终不得不等待比我自己输入整个“安装”或“签出”更长的时间。
我在 zshzle 手册页中没有看到任何值得注意的内容,但也许我错过了一些东西?其他 shell 是否具有此功能?
编辑: 简单的答案。那么:有没有一种方法可以让 zsh 估计制表符补全需要相对较长的时间来执行,然后询问用户是否愿意这样做?
答案1
A信号情报中断当前完成操作并带您返回行编辑器。所以按Ctrl+ C。效果可能不会立竿见影:解释器仅在执行期间的某些点检查信号(尽管它们很频繁),并且如果 zsh 进程在系统调用中被阻止(例如,如果它是等待文件系统响应)。
不幸的是,如果您在错误的时间按Ctrl+ C,并且在发送信号时尚未完成任何操作,则您当前的命令行将被取消。如果没有两个不同的中断键(一个用于完成,一个用于其余),则很难修复此问题,并且我不确定 zsh 是否支持此功能。
如果完成可能需要很长时间,那么警告您实际上是不可行的。完成函数的速度通常主要取决于从文件系统读取某些信息的速度;这些信息是否在缓存中、有多少、以及它是什么类型的文件系统(例如 ramdisk、硬盘或 NFS 安装)都有很大的影响。
答案2
您可以使用ctrl+k取消自动完成。但是我找不到任何信息zsh 指南要么,但它确实取消自动完成。