2009-07-23 2 views
4

나는 CLI 도구를 구현하기 위해 Perl에서 Term::Shell 패키지를 사용하고 있습니다. 나는 그것으로 명령 부분의 탭 완성을 할 수 없다.Perl의 Term :: Shell에서 탭 완성을 수행하려면 어떻게해야합니까?

comp_CMD() -이 Term :: Shell에서 제공하는 API로 탭 완성을 얻는 것입니다. 이것은 도움이되지 않습니다. 아무도이 작품을 만드는 방법을 알고 있습니까 ??

샘플 코드 : 그냥 나에게 탭을 제공합니다 ..

Sample>show[TAB] 

위의 명령 나던 예상 출력을 제공 :

#!/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; 

이 프로그램의 실행이다.

+1

작업을 시도한 샘플 코드를 게시하십시오. – Inshallah

+0

답변을 삭제하고 질문에 샘플 코드를 추가하십시오. 또한 샘플 코드의 각 행을 4 개의 추가 공백으로 들여 쓰기하여 코드 블록으로 표시하십시오. – Inshallah

+1

@Anandan : 코드에서 서식을 정리하려고했지만 Inshalla가 맞습니다. 답변을 삭제하고 질문의 일부로 코드를 게시하십시오. 편집 단추를 사용하여 코드를 코드로 올바르게 포맷 할 수 있습니다. – Telemachus

답변

2

샘플이 저에게 적합합니다. "쇼"와 그 인수 모두 완료됩니다.

"show"를 입력하고 나면 더 이상 완료 할 필요가 없습니다. 이미 완전한 명령입니다. 첫 번째 인수를 완료하려면 최소한 첫 번째 문자를 제공해야합니다. 예를 들어, 쇼 바로 다음에 <TAB>을 입력하면 완료 할 인수의 첫 글자를 입력해야하는 곳으로 이동할 수 있습니다. 그리고 <TAB> 두 번 연속으로 실행하면 어떤 완료를 사용할 수 있는지 알 수 있습니다.

유일한 차이점은 인수가 완료되면 자동으로 완료되지 않는다는 것입니다. 그래도 첫 번째 편지를 제공해야합니다. 다소 이상한 일이지만, 구현 자의 감독 만있을 수 있습니다.

+0

여기에 : sh [탭]이 펼쳐져서 – Cebjyre

0

우선 "코멘트 추가"버튼을 얻지 못하고 있습니다. 답변으로 게시하고 있습니다.

sample> sh"TAB" 

sample>show w"TAB" 

아무것도 일하지 :

나는이 방법을 시도했다.

환경과 관련이 있습니까? 또는 다른 것?

+0

으로 나옵니다. 자신의 대답을 편집 할 수 있어야합니다. –

+0

댓글을 남기려면 최소한 50 개의 rep 지점이 필요합니다. –

관련 문제