【问题标题】:Calling readline()'s Tab Completion Directly直接调用 readline() 的 Tab 补全
【发布时间】:2015-10-30 21:13:28
【问题描述】:

我知道我是否想要标签完成,我可以使用

char *readline (const char *prompt);

我会在它运行时完成标签,但是如果我已经有一个我想要完成的字符串怎么办?我可以直接调用 readline 库中的特定函数并将字符串作为参数发送以使其运行制表符完成吗?

我已经阅读了很多 complete.c 的源代码,找到了一个我可以发送字符串但没有运气的主函数。

【问题讨论】:

  • 您可以查看this链接以获取信息。
  • 看起来很有趣,但我不确定是否有任何函数可以让我给它们一个字符串来完成。最大的 rl_complete() 需要一个 int ignore 和一个 int invoking_key ,我认为它们来自正在运行的 readline?

标签: c readline libreadline


【解决方案1】:

我不知道 C 端 API 的确切位置,但从 BASH 端调用的东西来看,compgen 可以接受“部分”输入。

主要问题是“部分”输入通常提供给位于 /usr/share/bash-completion/completions/“程序”中的 shell 脚本,因此您所寻求的可能实际上不是“C API”,而是一个或多个 bash 脚本的输出。

【讨论】:

  • 但是如果我正在构建一个 shell,我猜这不会有太大帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 2023-03-18
相关资源
最近更新 更多