zsh中别名子命令的制表符完成:别名gco ='git checkout'

Wil*_*ord 24 git zsh tab-completion

我有一个别名: alias gco='git checkout'

如何添加标签完成,就像我输入一样git checkout

对于我的alias g='git'我使用compdef g='git'.

我一直在尝试使用,compdef但我没有取得任何成功.

Mat*_*yan 25

禁用此选项,你也很好......

# don't expand aliases _before_ completion has finished
#   like: git comm-[tab]
# setopt complete_aliases
Run Code Online (Sandbox Code Playgroud)

  • 这样做对我来说.为了说清楚,你想要在这个响应中注释掉那一行,而不是让你的`config.zsh`看起来像它.如果要完成别名,则应该**不要设置complete_aliases选项. (7认同)

ZyX*_*ZyX 19

您不需要做任何事情,尤其是compdef g='git'它应该在没有任何配置的情况下工作.只有在使用函数代替别名时才需要某些东西.

  • @WilliamBettridge-Radford这些人必须做一些事情来禁用默认行为或只做不必要的工作.只需做`zsh -f <CR> autoload -Uz compinit <CR> compinit <CR> alias gco ='git checkout'<CR> gco <Tab>`.在这种情况下,我看到了一个ref列表.另一个测试:`别名g ='git'<CR> compdef g ='hg'<CR> g <Tab>`:`compdef`被简单地忽略,我得到完成git而不是mercurial并且需要`compdef git = 'hg'`覆盖行为(显然对于别名和`git`). (3认同)
  • 我刚刚完成文件。我注意到 oh-my-zsh 使用 compdef;https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh (2认同)

ypr*_*sto 6

对我来说,添加complete_aliasescompdef是获得以下代码段工作所必需的:

alias docker-compose-dev='docker-compose -f docker-compose.yml -f docker-compose-dev.yml'

compdef docker-compose-dev='docker-compose'
setopt complete_aliases
Run Code Online (Sandbox Code Playgroud)