Zsh 智能自动完成功能?

Zsh 智能自动完成功能?,zsh,oh-my-zsh,zsh-completion,Zsh,Oh My Zsh,Zsh Completion,我的~/.zshrc中有以下别名: ~ which pulseaudio-restart pulseaudio-restart: aliased to killall pulseaudio && pulseaudio --start Zsh是否可以配置为键入restart将输出mepulseaudio restart作为建议,因为它包含字符串restart 当前,键入restart只会显示: ~ rest restart restore-trash 是的,这是

我的
~/.zshrc
中有以下别名:

~ which pulseaudio-restart 
pulseaudio-restart: aliased to killall pulseaudio && pulseaudio --start
Zsh是否可以配置为键入
restart
将输出me
pulseaudio restart
作为建议,因为它包含字符串
restart

当前,键入
restart
只会显示:

~ rest
restart        restore-trash

是的,这是可能的。为此,您必须设置/修改完成模块的
匹配器列表
样式。这可以通过以下命令完成:

zstyle ':completion:*' matcher-list 'l:|=* r:|=*' 
这会告诉补全符在键入的单词的左侧和右侧查找补全(具体信息可在
zshcompwid(1)
中找到)

正如名称
匹配器列表
所示,可能存在多个匹配规范,在这种情况下,重要的是
'l:|=*r:|=*'
是第一个。规范将按其出现的顺序进行尝试,直到有东西返回匹配



对于
oh my zsh
matcher list
lib/completion.zsh中设置,它已经包含所需的规范,但仅作为最后一个选项。加载
噢,我的zsh
后,您可以在那里更改顺序或在
~/.zshrc
中添加您自己的设置。

非常好的解决方案!虽然我确实使用了
ohmyzsh
,但我只是在我的
~/.zshrc
底部添加了
zstyle::完成:“'matcher list'l:|=*r:|=*”
,效果非常好!为什么不给别名命名
重新启动pulseaudio
?因为您使用的是制表符补全,所以别名的确切名称似乎并不重要。这一点很好。但是,对我来说,更容易记住
pulseaudio restart
,因为我知道我正在寻找与
pulseaudio
相关的命令。