2013-05-31 17 views

回答

0

很可能zsh仍在尝试在您的情况下完成文件完成,它只是将--arg=作为文件名的起始部分,导致它找不到任何匹配项。既然关于命令如何解释它们的参数没有任何通用规则,最安全的选择是shell不对这些参数做出任何假设。

如果您使用空格而不是=符号(例如program_name --arg /some/path/goes/here),许多使用该类型语法的命令的作用将相同。因为这将是一个单独的参数,shell应该能够完成没有问题的文件完成。

根据您配置zsh的方式,它也可能使用setopt MAGIC_EQUAL_SUBST。我通常会设置该选项并获取您正在查找的行为,但是如果我取消选中该选项,则会获得您当前遇到的行为。但是,如果我使用zsh -f跳过加载我的配置只是启用该选项是不够的,所以显然我的配置中有其他东西是必要的,可能只是完成系统的启用,您可能已经完成了。可能会出现这种情况,导致不良行为,但在我使用带有该选项集的zsh的许多年中,我还没遇到任何问题。

一个更复杂的选项是为该命令编写一个完成函数,它告诉zsh该选项将文件名作为参数。

相关问题