Python, grâce à ses liaisons readline, permet une auto-complétion en ligne de commande (comme décrit dans here). Mais, l'achèvement semble seulement fonctionner au début des chaînes. Si vous voulez faire correspondre le milieu ou la fin d'une chaîne readline ne fonctionne pas. Je souhaite compléter automatiquement les chaînes dans un programme python en ligne de commande en faisant correspondre ce que je tape avec l'une des chaînes d'une liste de chaînes disponibles.Comment faire une autocomplétion de ligne de commande python, mais PAS seulement au début d'une chaîne
- Un bon exemple du type d'auto-complétion que je voudrais avoir est le type qui se produit dans GMail lorsque vous tapez dans le champ À. Si vous tapez un nom de famille de vos contacts, cela apparaîtra aussi bien que si vous avez tapé son prénom.
- Une utilisation des flèches vers le haut et vers le bas ou une autre méthode de sélection parmi les chaînes appariées peut être nécessaire (et non nécessaire dans le cas de readline) et c'est très bien dans mon cas.
- Mon cas d'utilisation particulier est un programme de ligne de commande qui envoie des courriels.
- Des exemples de code spécifiques seraient très utiles.
L'utilisation d'émulateurs de terminal comme des curseurs serait bien. Il doit seulement fonctionner sur Linux, pas sur Mac ou Windows.
Voici un exemple: Dire que j'ai les trois chaînes suivantes dans une liste
['Paul Eden <[email protected]>',
'Eden Jones <[email protected]>',
'Somebody Else <[email protected]>']
Je voudrais un code qui saisie semi-automatique les deux premiers éléments dans la liste après type I « Eden » et permettez-moi de choisir l'un d'entre eux (tout au long de la ligne de commande en utilisant le clavier).
Oui, je voudrais être en mesure de rechercher dans le milieu ou la fin de chaînes et pas seulement au début. –
L'exemple ci-dessus fonctionne de cette façon. Si j'appuie sur "control-r o", cela sélectionne "foo". –
Nouvelle idée. Y a-t-il un moyen de faire automatiquement (c'est-à-dire sans appuyer sur control-r en premier)? –