有没有办法在开始后取消完成?我有时会愚蠢地按 Tab 键来自动完成 make 目标(仅仅是因为懒惰),然后最终不得不等待比我自己输入整个“安装”或“检查”更长的时间。
我在 zshzle 手册页中没有看到任何值得注意的东西,但也许我错过了什么?有没有其他shell有这个功能?
编辑:琐碎的答案。所以相反:有没有办法让 zsh 估计选项卡完成需要相对较长的时间来执行,而是询问用户是否愿意这样做?
一个SIGINT中断当前操作完成,给您带来回线编辑器。所以按Ctrl+ C。效果可能不是立竿见影的:解释器只在执行期间的某些点检查信号(尽管它们很频繁),如果 zsh 进程在系统调用中被阻塞(例如,如果它是等待文件系统响应)。
不幸的是,如果您在错误的时间按Ctrl+C并且在信号传递时没有正在进行的完成,您当前的命令行将被取消。如果没有两个不同的中断键,这很难解决,一个用于完成,一个用于其余,我不确定 zsh 是否支持这一点。
如果完成可能需要很长时间,警告您实际上并不可行。完成函数的速度通常主要取决于从文件系统中读取某些信息的速度;这些信息是否在缓存中,有多少,以及它是什么类型的文件系统(例如 ramdisk、硬盘或 NFS 挂载)有很大的影响。