gpt4 book ai didi

zsh - 如何配置 zsh 以完成部分单词,但不区分大小写?

转载 作者:行者123 更新时间:2023-12-02 18:35:55 26 4
gpt4 key购买 nike

目前我的 ~/.zshrc 中有这个:

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'

AFAIU 'm:{a-z}={A-Za-z}' 意味着我将获得不区分大小写的制表符完成,例如foo 将制表符补全为 Foobar(如果存在)。而 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' 意味着我将匹配单词的后面部分,例如bar 将制表符补全到 foobar(如果存在)。但是那些部分匹配不是不区分大小写的。因此,例如 bar 不会对 FooBar 进行制表符补全(同样,如果它存在的话)。

有没有办法让它发挥作用?

最佳答案

matcher-list 中的匹配器总是一次尝试一个,直到其中一个返回至少一个匹配项。默认情况下,每个匹配器完全替换前一个。要使下一个匹配器包含 为前一个匹配器,您需要在其前面加上+ 前缀。 :

zstyle ':completion:*' matcher-list \
'm:{[:lower:]}={[:upper:]}' \
'+r:|[._-]=* r:|=*' \
'+l:|=*'

参见 matcher-list completion style文档。


And 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' means that I will get matches for later parts of a word, e.g. bar will tab-complete to foobar (if that exists).

不完全是:

  • 如果<word>是命令行上正在完成的字符串,那么默认情况下,Zsh 将返回与 glob pattern 匹配的完成<word>* — 除非 COMPLETE_IN_WORD已设置,在这种情况下,它将通过插入 * 创建一个完成模式而不是在光标位置。
  • r:|[._-]=*表示“对于 <word> 中的每一次出现空字符串的右边 ( r ) 是 . , _- , 插入 *它们之间 ( | ) 在完成模式中。”
  • r:|=*意思是“如果<word>在右侧以空字符串结束(始终为真),在完成模式后缀 *
  • l:|=*意思是“如果<word>左侧以空字符串开始(始终为 true),在完成模式前加上 * 前缀”
  • 在父完成模式的相同索引处插入的多个子模式通过逻辑或组合。

参见 completion matching control文档以获得更深入的解释。

关于zsh - 如何配置 zsh 以完成部分单词,但不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68786631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com