如果我键入小写,如何使zsh自动完成为我提供不区分大小写的匹配,但如果我键入大写,如何使其提供区分大小写匹配?例如,如果我键入";HO选项卡";它应该提供HOME
和HOST
;ho选项卡";它应该提供HOME
、HOST
、host
、hostinfo
和hostname
。
不区分大小写的部分很容易(matcher-list m:{a-zA-Z}={A-Za-z}
(,我发现Have zsh返回不区分大小大小写的自动完全匹配,但更喜欢精确匹配,但这不是我想要的——如果有任何精确的小写匹配,它不会提供大写匹配。我怀疑答案与左锚火柴有关,但我无法让它发挥作用。
我最初想的是,如果键入的字符串包含任何大写字符,那么它应该完全匹配。我仍然不知道该怎么做。然而,对于我的目的来说,一个稍微放松的形式就足够了:
- 小写字符应匹配大小写字符
- 大写字符应仅与其自身匹配
这样构建,答案很明显:删除我现有的完全不区分大小写的matcher-list
样式(m:{a-zA-Z}={A-Za-z}
(,并将其替换为:
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'