Можно ли вручную вызвать функцию завершения 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, а не выполнять общие функции.

  • Почему «xargs bash -ic echo» не то же самое, что «xargs echo» или «xargs»?
  • Изменение цвета при смене каталога
  • Как я могу вернуться в «обычный» режим редактирования после нажатия esc в режиме zsh (vi)?
  • перенаправление ввода-вывода zsh: перенаправление и последующее соединение; что происходит?
  • Есть что-то вроде закрытия для zsh?
  • oh-my-zsh не может угадать правильную команду
  • Что используется сначала, .bashrc или .zshrc?
  • Почему некоторые буквы или escape-последовательности не отображаются правильно в urxvt?
  • 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 - лучшая ОС в мире.