我想要中的文件和目录不区分大小写的模糊完成zsh。阅读了几个小时的手册后,我想到了以下内容:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
此外,我想按TAB一次以显示可能的补全,仅在有一个补全的情况下才修改输入的内容。然后再按TAB一次将使我进入“菜单完成”模式。根据手册,我想到了以下内容:
zstyle ':completion:*' menu select
现在,在一种情况下,一切都会按预期进行。我有两个文件夹,Desktop并且.rstudio-desktop在主目录中。既然有了setopt globdots,我希望输入以下内容:
$ cd ~/dktop<TAB>
保留输入的命令,并显示为完成候选Desktop和.rstudio-desktop。相反,它将删除 dktop,剩下以下内容:
$ cd ~/
我看了所有相关的手册,指南,Stack Exchange问题以及其他各种来源。但是无论我做什么,我都无法完成这项工作。
不过,有趣的是,如果我在主目录中并键入以下内容,则一切都会按预期进行:
$ cd dktop<TAB>
也就是说,这仅是路径的非前导段的问题(您可以看到C-x h,这对应于directories标记而不是local-directories所使用的标记)。
为了易于重现,此处提供了~/.zshrc一种可以重现上述情况和行为的工具(在zshHomebrew 的全新El Capitan虚拟机上进行了测试)。
@PythonNut
—
Radon Rosborough
zsh 5.3.1在OS X上确实会重现该问题。有趣的是,操作系统之间存在差异。
@PythonNut实际上,我打赌这是因为Linux区分大小写,而macOS不区分大小写。
—
Radon Rosborough
提醒您,并非所有Mac / macOS都不区分大小写,这取决于您的磁盘是否格式化为不区分大小写。
—
konqui
zsh 5.3.1在Arch Linux。cd ~/dktop<tab>产量cd ~/Desktop。