tcsh에서 자동 완성을 수행할 때 이전 매개변수를 참조할 수 있나요?

tcsh에서 자동 완성을 수행할 때 이전 매개변수를 참조할 수 있나요?

여기서는 효율적인 자동 완성 기능을 얻으려고 노력하고 있지만 몇 가지 문제가 발생했습니다.

동시에 두 가지를 설정하는 명령이 있습니다. 첫 번째 목록은 비교적 작지만 첫 번째 목록으로 필터링하지 않으면 두 번째 목록은 관리할 수 없을 정도로 커집니다.

내가 하고 싶은 것은 첫 번째 매개변수가 이미 입력되었거나 자동 완성된 내용을 두 번째 자동 완성 명령에 전달하는 것입니다.

complete job 'p/1/`listJobs`/' 'p/2/`listTasks`/'

내가 하고 싶은 일은 첫 번째 인수로 입력된 작업을 "listTasks" 명령에 전달하는 것입니다.

어떻게 할 수 있는지 아시나요?

건배

(이것은 아무도 대답하지 않은 나의 오래된 SuperUser.com 질문을 다시 게시한 것입니다... 슈퍼유저 질문은 찾을 수 있습니다여기)

답변1

이것이 내가 찾을 수 있는 최선의 선택입니다:

complete job 'p/1/`listJobs`/' \
             'p/2/`set cmd = ( $COMMAND_LINE ); listTasks $cmd[$#cmd]`/'

내 Ubuntu 시스템에서 사용할 수 있는 이라는 변수에 의존 $COMMAND_LINE하지만 이것이 표준인지는 확실하지 않습니다.

버전에서 호출된 명령은 ...이름에서 알 수 있듯이 현재(입력된) 명령줄의 내용을 포함하는 COMMAND_LINE이라는 추가 환경 변수를 설정합니다. 사용자 정의 스크립트에 있는 COMMAND_LINE 변수의 내용을 검사하고 보다 복잡한 완성을 구축하는 데 사용할 수 있습니다(이 패키지에 포함된 svn(1) 완성 참조).

!!실패하면 또는 같은 기록 확장을 시도해 볼 수 있지만 !#$이것이 가능한지 확실하지 않습니다.

관련 정보