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:|=*\'\n
Run 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 次 |
最近记录: |