我想要中的文件和目录不区分大小写的模糊完成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
一种可以重现上述情况和行为的工具(在zsh
Homebrew 的全新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
。