Можно ли вручную вызвать функцию завершения zsh?

Если я нахожусь в приглашении zsh, и у меня есть текущий «контекст» (частично завершенная команда командной строки)

% man gr_ ^ here I have used _ to represent the cursor 

Если я затем _complete_help функцию _complete_help Ctrl X h

Это говорит мне, что контекст

 % man gr_ tags in context :completion::complete:man:: manuals (_man) 

Если я правильно читаю этот вывод – я вижу, что есть функция _man которая может _man все известные _man страницы, которые будут вызываться, если я нажму клавишу Tab в этот момент.
Мой вопрос: можно ли вручную _man функцию _man completeter? вместо того, чтобы _man был вызван compsys (который сам вызывается Tab )?

Я попытался использовать мини-буфер zle <Esc>x , затем введите _man<Enter> но я думаю, что мини-буфер способен только понимать команды zle, а не выполнять общие функции.

  • Есть ли плагин или инструмент для нескольких «профилей» в ZSH?
  • Как я могу автозаполнять каждый параметр по-другому?
  • Получить командную строку в завершении ZSH
  • zsh - проверить аргументы команды перед ее выполнением
  • Копирование текущей командной строки в буфер обмена
  • Ищете удобный способ создания «постоянного массива»,
  • zsh отказывается принять новый сценарий автозаполнения
  • Таинственное повторение введенной команды в оболочке
  • 2 Solutions collect form web for “Можно ли вручную вызвать функцию завершения zsh?”

    Я обнаружил, что да, это возможно и пригодно для простых функций завершения, но поскольку эта конкретная функция _man выполняет некоторую обработку синтаксического анализа и проверки, она генерирует ошибку при вызове вне ее ожидаемого контекста.

    Вот что я сделал, чтобы привязать _man завершения _man к комбинации клавиш, чтобы ее можно было вызвать вручную.

    Определите функцию-оболочку, которая задает требуемые параметры.

     _man_autonomous () { eval $_comp_setup _man "$@" } 

    Зарегистрируйте новый виджет с редактором строк:

     zle -C complete-man expand-or-complete _man_autonomous 

    привяжите виджет к Ctrl + T

     bindkey '^T' complete-man 

    В этом примере используется метод _files в zsh FAQ .

    Я не уверен, почему zsh не предоставляет эту функциональность … К счастью, кто-то взломал: https://github.com/Valodim/zsh-capture-completion

     $ capture.zsh 'man gr' grep <snip> groff <snip> 
    Linux и Unix - лучшая ОС в мире.