Quando completar automaticamente em tcsh, posso referenciar um argumento anterior?

5

Estou tentando obter um preenchimento automático eficiente aqui e estou com problemas.

Eu tenho um comando para definir duas coisas ao mesmo tempo. A primeira é uma lista relativamente pequena, mas a segunda, se não filtrada pela primeira, é imensamente grande.

O que eu quero ser capaz de fazer é passar o que já foi digitado ou preenchido automaticamente para o primeiro argumento do segundo comando de autocompletar ...

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

O que eu quero fazer é passar o trabalho que já foi inserido para o primeiro argumento para o comando 'listTasks'.

Alguma ideia de como posso fazer isso?

Felicidades

(este é um repost de uma antiga pergunta do SuperUser.com que ninguém nunca respondeu ... A questão do SuperUser pode ser encontrada aqui )

    
por Hugh 10.12.2010 / 21:48

1 resposta

4

Aqui está a melhor opção que consegui encontrar:

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

Ele está confiando em uma variável chamada $COMMAND_LINE , que está disponível no meu sistema Ubuntu, mas não tenho certeza se é padrão.

command invoked from ... version has additional environment variable set, the variable name is COMMAND_LINE and contains (as its name indicates) contents of the current (already typed in) command line. One can examine and use contents of the COMMAND_LINE variable in her custom script to build more sophisticated completions (see completion for svn(1) included in this package).

Caso contrário, você experimentaria expansões de histórico, como !! ou !#$ , mas não tenho certeza se isso funcionará.

    
por 08.02.2011 / 04:56