对于其他驱动器,Cygwin 下的 zsh 补全功能不起作用

对于其他驱动器,Cygwin 下的 zsh 补全功能不起作用

我使用的是 Win7 x64、Cygwin 1.7 和 zsh(并使用 oh-my-zsh)。我是 Zsh 新手。

我已经审查过zsh 自动完成功能在 cygwin 上不起作用并尝试了那里的解决方案,但没有成功。

我的挂载表:

 C: on /c type ntfs (binary,posix=0,user,noumount,auto)
 D: on /d type ntfs (binary,posix=0,user,noumount,auto)
 F: on /f type ntfs (binary,posix=0,user,noumount,auto)

如您所见,我将/c, /d and /f其用于驱动器。更改默认前缀的部分原因/cygdrive是为了保持与 Msysgit 的兼容性

不幸的是,更改驱动器前缀后,zsh 补全不起作用

键入cd /f/code/Por<tab>不再完成文件夹或显示选项。但在 Bash 中它工作正常 :(

如果我 cd 进入/f然后输入cd Por- 完成工作。

我怎样才能让它在任何地方发挥作用?

答案1

该解决方案的缺点是必须指定每个驱动器,但它对我来说有效:

zstyle ':completion:*' fake-files   '/:c' '/:d'

答案2

我遇到了类似的问题。如果找到解决方案: http://blog.en.edaro.net/2014/01/fix-broken-autocompletion-with-zsh-in.html

在我的情况下,只有在您安装 cygwin 时以其他用户身份运行 cygwin 时才会出现问题。并且,只有当此运行用户是管理员时(未使用非特权用户进行测试),才会出现此问题。问题可能是:作为管理员,您可以“始终”修改文件,即使 chmod 不允许这样做。compinit 不知道这种情况(它是一个 unix 应用程序),但它发现您有写入权限 - 这就是问题所在。

相关内容