Lors de l'auto-complétion dans tcsh, puis-je referencer un argument précédent?

J'essaie d'get un auto-complétion efficace et je suis tombé sur un problème.

J'ai une command pour définir deux choses à la fois. La première est une list relativement petite, mais la seconde, si elle n'est pas filtrée par la première, est immensément gigantesque.

Ce que je veux pouvoir faire, c'est passer ce qui a déjà été saisi ou complété automatiquement pour le premier argument de la deuxième command d'autocomplétion …

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

Ce que je veux être en mesure de faire est de passer le travail qui a déjà été entré pour le premier argument à la command 'listTasks'.

Une idée comment je peux faire ça?

À votre santé

(c'est un repost d'une vieille question de SuperUser.com de la mienne que personne n'a jamais répondu … La question de SuperUser peut être trouvée ici )

Voici la meilleure option que j'ai pu find:

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

Il s'appuie sur une variable appelée $COMMAND_LINE , qui est disponible sur mon système Ubuntu, mais je ne suis pas sûr que ce soit standard.

command appelée à partir de ... version a une variable d'environnement supplémentaire définie, le nom de la variable est COMMAND_LINE et contient (comme son nom l'indique) le contenu de la command line actuelle (déjà tapée). On peut examiner et utiliser le contenu de la variable COMMAND_LINE dans son script personnalisé pour build des compléments plus sophistiqués (voir complétion pour svn (1) inclus dans ce package).

A défaut, vous expérimenterez des extensions d'histoire telles que !! ou !#$ , mais je ne sais pas si cela fonctionnera.