我在Perl中使用Term::Shell包来实现CLI工具。我无法使用它完成命令部分的选项卡。
comp_CMD() - 这是由Term :: Shell提供的API,用于实现选项卡完成。 这对我没有帮助。有谁知道如何使这项工作?
示例代码:
#!/usr/bin/env perl
package Sample;
use base qw(Term::Shell);
sub prompt_str { "Sample\>" };
sub comp_show
{
my $o = shift;
my $word = shift;
$o->completions($word, [qw(all work and no play is no fun at)]);
}
sub run_show
{
print "run show\n";
}
package main;
Sample->new->cmdloop;
这是该计划的一部分:
Sample>show[TAB]
上面的命令没有给出预期的输出..它只给了我一个标签。
答案 0 :(得分:6)
答案 1 :(得分:2)
你的样本适合我。 “show”及其论点都已完成。
输入“show”后,没有什么可以完成的,它已经是一个完整的命令。为了完成第一个参数,你必须至少提供它的第一个字母;所以输入< TAB>在演出结束后,您只能到达必须输入要完成的参数的第一个字母的位置。如果你点击< TAB>连续两次,您将看到可用的完成情况。
我发现奇怪的是,如果只有一个单个可能的参数要完成,它就不会自动完成。你仍然需要提供第一个字母。这有点奇怪,但也许只是实施者的疏忽。
答案 2 :(得分:0)
首先,我没有收到“添加评论”按钮..所以我发帖作为答案。
我试过这种方式:
sample> sh"TAB"
sample>show w"TAB"
没有任何效果。
它与环境有什么关系吗?或其他什么?