相关疑难解决方法(0)

如何以编程方式访问 zsh 完成?

zsh 有一个完成系统,通过按 Tab 键激活:

llama@llama:~$ git st<Tab>
Completing main porcelain command
stash      -- stash away changes to dirty working directory
status     -- show working-tree status
Completing plumbing internal helper command
stripspace -- filter out empty lines
Run Code Online (Sandbox Code Playgroud)

我所能弄清楚的是,这来自 script /usr/share/zsh/functions/Completion/Unix/_git,在哪里_git调用完成命令。

假设我知道完成函数的名称(例如_git),如果我输入某个字符串并按下 Tab,我怎么能得到会发生什么的输出?本质上,我正在尝试输入 ex。git st并获得上面的输出(以编程方式,从脚本中)。

对于bash,还有许多其他关于此的现有问题,但我没有找到任何解释如何使用 zsh 实现此目的的内容。

zsh autocomplete

8
推荐指数
1
解决办法
507
查看次数

是否可以手动调用 zsh 完成功能?

如果我在 zsh 提示符下并且我有当前的“上下文”(部分完成的命令行命令)

% man gr_
        ^ here I have used _ to  represent the cursor 
Run Code Online (Sandbox Code Playgroud)

如果我然后调用该_complete_help函数CtrlXh

它告诉我上下文是

% man gr_
tags in context :completion::complete:man::
    manuals  (_man)
Run Code Online (Sandbox Code Playgroud)

如果我正确阅读了这个输出——我可以看到有一个完整的函数_man能够列出所有已知的手册页——如果我此时按下Tab键,它将被调用。
我的问题是,我可以_man手动调用完成函数吗?而不是_man被 compsys 调用(它本身被调用Tab)?

我尝试使用 zle minibuffer <Esc>x,然后输入,_man<Enter>但我认为 mini-buffer 只能理解 zle 命令,不能执行一般功能。

zsh autocomplete

5
推荐指数
1
解决办法
1133
查看次数

标签 统计

autocomplete ×2

zsh ×2