使用Term :: Shell的选项卡完成在修改提示后停止工作

时间:2017-10-22 11:03:52

标签: perl

使用此代码:

#!/usr/bin/env perl

use warnings;
use strict;

package Testsh;
use base qw(Term::Shell);

my @actions = qw/ a b c d e f g h /;

sub comp_cd {
    my ( $self, $action ) = @_;
    $self->completions( $action, \@actions);
}

sub run_cd {
    my ( $self, $action ) = @_;
    $self->prompt( "$action~> ");
}

package main;
my $shell = Testsh->new;
$shell->cmdloop;

当我启动shell并按两次 tab 时,我有三个选项:cd,退出帮助。

如果我执行其中一个操作,则提示符将更改为操作名称,但我不再能够使用选项卡完成功能。这是为什么?

1 个答案:

答案 0 :(得分:3)

The Term:Shell API中所述,您可以指定prompt的完成作为第三个参数:

$self->prompt( "$action~> ", '', [ glob '*' ]);