sha*_*ahn 2 zsh zshrc zsh-completion
目前我的~/.zshrc:
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
Run Code Online (Sandbox Code Playgroud)
AFAIU'm:{a-z}={A-Za-z}'意味着我将获得不区分大小写的制表符完成,例如foo将制表符完成到Foobar(如果存在)。并且'r:|[._-]=* r:|=*' 'l:|=* r:|=*'意味着我将获得单词后面部分的匹配项,例如bar将制表符补全到foobar(如果存在)。但这些部分匹配并非不区分大小写。因此,例如bar,不会使用制表符完成FooBar(再次,如果存在的话)。
有办法让它发挥作用吗?
你的匹配器matcher-list总是一次尝试一个,直到其中之一返回至少一场匹配。默认情况下,每个匹配器都会完全替换前一个匹配器。要使下一个匹配器包含前一个匹配器,您需要在其前面加上前缀+:
zstyle \':completion:*\' matcher-list \\\n \'m:{[:lower:]}={[:upper:]}\' \\\n \'+r:|[._-]=* r:|=*\' \\\n \'+l:|=*\'\nRun Code Online (Sandbox Code Playgroud)\n请参阅matcher-list完成样式文档。
\n\n并且
\n\'r:|[._-]=* r:|=*\' \'l:|=* r:|=*\'意味着我将获得单词后面部分的匹配项,例如bar将制表符补全到foobar(如果存在)。
不完全是:
\n<word>命令行上的字符串是 \xe2\x80\x99s 正在完成,那么默认情况下,Zsh 将返回与glob 模式 <word>*\xe2\x80\x94 匹配的完成,除非COMPLETE_IN_WORD设置了,在这种情况下它将创建一个完成模式通过*在光标位置插入来代替。r:|[._-]=*表示 \xe2\x80\x9c 对于<word>空字符串中的每次出现,后跟右侧 ( r) 的.、_或,在补全模式中在它们之间-插入( )。\xe2\x80\x9d*|r:|=*表示 \xe2\x80\x9c如果<word>在右侧以空字符串结尾(始终为真),请在完成模式后缀*.\xe2\x80\x9dl:|=*表示 \xe2\x80\x9c 如果<word>在左侧以空字符串开头(始终为 true),则在完成模式前添加*.\xe2\x80\x9d请参阅完成匹配控制文档以获取更深入的解释。
\n| 归档时间: |
|
| 查看次数: |
1418 次 |
| 最近记录: |