Как я устанавливаю правила автозавершения Zsh для второго аргумента (функции) к правилам существующей команды?

Вы попробовали Автоключ? Это - намного более легкий путь, чем xbindkeys или xmacro.

9
07.05.2014, 02:01
3 ответа
[113126] Я нашел [113572]/usr/share/zsh/functions/Completion/Unix/_git[113573], который имел несколько подсказок для таких псевдонимов и в итоге определил эти функции для псевдонимов:
  • Затем я сделал прямую [113574]compdef g=git[113575]. Система автозавершения увидит, что вы выполняете, например, [113576]g ls[113577] и используете функцию автозавершения [113578]_git-ls[113579].
  • Спасибо user67060 за то, что направил меня в правильном направлении.[113131].
3
27.01.2020, 20:07
[112363]Это то, что я бы сделал:

Однако это использование завершения Git'а, а не zsh'а:

https://git.kernel.org/cgit/git/git.git/tree/contrib/completion/git-completion.zsh

1
27.01.2020, 20:07

Мне пришлось сделать нечто очень похожее, так что это примерно то, что должно решить вашу проблему.

_g () {
    case "${words[2]}" in
      ls) words[1,2]=(git ls-files);;
      g) words[1,2]=(git grep);;
      *) return 1;;
    esac

    _git # Delegate to completion
}
compdef _g g

Следует отметить, что если вы измените количество аргументов, вам нужно будет настроить переменную $ CURRENT .

2
27.01.2020, 20:07

Теги

Похожие вопросы