J'écris un petit cli à Python (comme une extension au Mercurial) et souhaitez prendre en charge l'achèvement de l'onglet. Plus précisément, j'aimerais attraper des onglets de capture dans l'invite et montrer une liste d'options de correspondance (comme Bash).
Exemple: Entrez le nom de la section: P>
ext*TAB* extensions extras
3 Réponses :
Pour cela, vous utilisez le exemple d'utilisation: p> Outre l'achèvement, readline code>
module. < p> code le plus simple que je puisse penser: p> readline code> vous fournit: p>
Merci, c'est exactement ce que j'espérais! Il n'y a qu'un seul problème - je ne peux pas l'amener à travailler sur mon système principal. Je suis sur OSX 10.6 avec Python 2.6 et il insère simplement une "\ t" comme normale. Alors j'ai démarré Ubuntu et ça marche parfaitement là - Savez-vous s'il y a une bibliothèque à ceci est une manière plus indépendante de la plate-forme?
Les pythons fournis par Apple n'utilisent pas la bibliothèque GNU Readline; Ils utilisent la bibliothèque d'édition dérivée BSD à la place. Les installateurs Python pour OS X de Python.org utilisent GNU Readline, de même que les pythons récents installés avec Macports.
Un excellent exemple de l'achèvement de l'onglet en coopération avec Readline < / a> est fourni dans la bibliothèque standard comme le module RLCompleter - Vous ne pouvez pas Utilisez-le comme étant (il se termine sur la base des noms actuellement définis dans la principale et intégrée de Python), mais cela montre comment effectuer la tâche générale et comment le connecter jusqu'à readline p>. P>.
Vous devriez presque certainement utiliser le module cmd , qui implémente déjà l'achèvement de l'onglet Et ainsi de suite, et probablement d'autres parties de ce que vous essayez de faire, à l'aide du module LIVELINE, etc. Il n'y a aucun point de réinventer la roue. P>