在 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 选项不会产生此效果。