Zsh: сделать определенный набор псевдонимов иметь приоритет в предложениях о завершении - PullRequest
1 голос
/ 15 декабря 2010

У меня есть несколько функций, установленных в моем профиле zsh, которые позволяют мне сохранять псевдонимы в каталогах на лету. Это довольно просто - просто добавьте псевдоним cd к dir в файл ~ / .dirs, который получен.

Возможно ли в zsh сделать так, чтобы псевдонимы из этого файла имели приоритет в предлагаемых дополнениях табуляции? Например, там есть псевдоним printeffect. Если я наберу «printe» и нажму «tab», первое предложение по завершению будет «printenv». Я хочу, чтобы оно было «printeffect».

1 Ответ

0 голосов
/ 11 декабря 2012

Это должно работать:

  • массив, содержащий ваши текущие специальные псевдонимы, вам нужно только переопределить массив при переключении директорий

    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
    
...