我使用的是 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 应用程序),但它发现您有写入权限 - 这就是问题所在。