![对于其他驱动器,Cygwin 下的 zsh 补全功能不起作用](https://linux22.com/image/1346552/%E5%AF%B9%E4%BA%8E%E5%85%B6%E4%BB%96%E9%A9%B1%E5%8A%A8%E5%99%A8%EF%BC%8CCygwin%20%E4%B8%8B%E7%9A%84%20zsh%20%E8%A1%A5%E5%85%A8%E5%8A%9F%E8%83%BD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我使用的是 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 应用程序),但它发现您有写入权限 - 这就是问题所在。