2010-12-15 36 views
1

我在zsh配置文件中設置了幾個函數,這些函數允許我將別名保存到動態目錄中。這非常簡單 - 只需將一個別名添加到cd到目錄中的〜/ .dirs文件即可。Zsh:在完成建議中使一組別名優先

是否有可能在zsh中將來自此文件的別名優先於建議的選項卡完成?例如,在那裏有一個名爲'printeffect'的別名。如果我輸入'printe'並點擊tab,第一個完成建議是'printenv'..我希望它是'printeffect'。

回答

0

這應該工作:

  • 一列保持當前的特殊別名,你只需要在你切換迪爾斯

    typeset -U MY_DIR_ALIASES 
    MY_DIR_ALIASES=(foo1 foo2 foo3 foo-etc) 
    
  • 定製完成者功能_foo(文件名來重新定義數組是_foo)當-commands-位置上的遊標完成時:

    _foo() { 
        cmds=($MY_DIR_ALIASES) 
    _describe -commands- cmds 
    } 
    

    或者,如果您要保存這個名爲_foo一個文件中:

    #compdef -command- 
    # -*-shell-script-*- 
    cmds=($MY_DIR_ALIASES) 
    _describe -commands- cmds 
    
  • 使這個完成者函數之前,任何其他跑出:

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