Zsh:在完成建议中,使某组别名优先

Zsh:在完成建议中,使某组别名优先,zsh,zshrc,Zsh,Zshrc,在我的zsh配置文件中设置了几个函数,让我可以动态地将别名保存到目录中。这非常简单-只需将一个别名添加到cd中,并将其添加到~/.dirs文件中,即可获得源代码 在zsh中,是否可以使来自此文件的别名在建议的制表符补全中优先?例如,其中有一个别名叫做“printeffect”。。如果我键入“printe”并点击tab,第一个完成建议是“printenv”。。我希望它是“printeffect”。这应该可以: 如果数组包含当前的特殊别名,则只需在切换dirs时重新定义数组 typeset -U

在我的zsh配置文件中设置了几个函数,让我可以动态地将别名保存到目录中。这非常简单-只需将一个别名添加到cd中,并将其添加到~/.dirs文件中,即可获得源代码

在zsh中,是否可以使来自此文件的别名在建议的制表符补全中优先?例如,其中有一个别名叫做“printeffect”。。如果我键入“printe”并点击tab,第一个完成建议是“printenv”。。我希望它是“printeffect”。

这应该可以:

  • 如果数组包含当前的特殊别名,则只需在切换dirs时重新定义数组

    typeset -U MY_DIR_ALIASES
    MY_DIR_ALIASES=(foo1 foo2 foo3 foo-etc)
    
  • 自定义完成函数
    \u foo
    (文件名为
    \u foo
    )在光标位于
    -commands-
    位置时完成:

    _foo() {
      cmds=( $MY_DIR_ALIASES )
     _describe -commands- cmds
    }
    
    或者,如果要将其保存在名为
    \u foo
    的文件中:

    #compdef -command-
    # -*-shell-script-*-
    cmds=( $MY_DIR_ALIASES )
    _describe -commands- cmds
    
  • 使此完成函数在任何其他函数之前运行:

    zstyle ':completion:::::' completer _foo _complete _approximate