Zsh 选项卡补全无法按部分路径的要求工作

Zsh 选项卡补全无法按部分路径的要求工作

我想要对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 虚拟机上进行测试)。

答案1

一种可能的解决方案是:

bindkey "^I" expand-word

这将导致选项卡扩展~/到绝对路径。

相关内容