全局别名的Zsh完成

时间:2019-12-28 15:46:53

标签: zsh zsh-completion zsh-alias

是否有办法在zsh中获取全局别名的制表符完成?定义为:

% alias -g zshplugins=~/.zshplugins

% nvim zshpl[tab]的制表符不完整。

我使用全局别名的主要目的是不必输入文件的路径,也不必将自己限制在单个命令(例如alias zshplugin="nvim ~/.zshplugins"

我知道,它们也可以在任意单行代码(例如| grep -i的全局别名)中使用,并且在每个制表符笔划中都没有建议的含义,但是如果有解决方法将它们包括在目录/文件完成中,那就太好了。

2 个答案:

答案 0 :(得分:0)

zshpl[tab]是否会在该行的开头完成(省略nvim)?这是我应该工作的。别名不用作文件名的快捷方式。 Shell变量可用于后者(它们上也有一个补全)。我建议您定义

zshplugins=~/.zshplugins

然后做

nvim $zshpl[tab]

答案 1 :(得分:0)

您应该使用shell变量,而不要使用全局别名。

但是,如果需要,请将以下代码添加到您的zshrc

_complete_alias() {
    [[ -n $PREFIX ]] && compadd -- ${(M)${(k)galiases}:#$PREFIX*}
    return 1
}
zstyle ':completion:*' completer _complete_alias _complete _ignored