如何让 zsh 的自动完成功能像 bash 一样完成通配符?

如何让 zsh 的自动完成功能像 bash 一样完成通配符?

在 zsh 和 bash 中,如果我输入,ls c<TAB>它会显示以 c 开头的每个文件名。如果我输入ls c*<TAB>,bash 的行为相同,但 zsh 会用以c*c 开头的每个文件的列表替换。有没有办法让 zsh 像 bash 一样运行?

答案1

setopt GLOB_COMPLETE

man zshoptions

全局完成

当当前单词具有 glob 模式时,不要插入扩展产生的所有单词,而是像 MENU_COMPLETE 一样生成匹配项以进行补全并循环遍历它们。生成匹配项就像在单词末尾添加了“*”一样,或者在设置 COMPLETE_IN_WORD 时插入到光标处。这实际上使用了模式匹配,而不是 glob,因此它不仅适用于文件,还适用于任何补全,例如选项、用户名等。

请注意,使用模式匹配器时,不能使用匹配控制(例如,不区分大小写或锚定匹配)。此限制仅在当前单词包含模式时适用;简单地打开 GLOB_COMPLETE 选项不会产生此效果。

相关内容