Zsh: Сделать определенный набор псевдонимов приоритетным в предложениях по завершению.

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

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


person idlefingers    schedule 15.12.2010    source источник


Ответы (1)


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

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

    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
    
person Francisco    schedule 11.12.2012