Sto scrivendo una piccola CLI in Python (come estensione a Mercurial) e vorrei supportare il tab-completion. In particolare, mi piacerebbe prendere le schede nel prompt e mostrare un elenco di opzioni di corrispondenza (proprio come bash).Completamento scheda nell'interfaccia della riga di comando Python - come catturare gli eventi di tabulazione
Esempio: Inserire il nome della sezione:
ext*TAB*
extensions
extras
Il problema è che non sono sicuro di come catturare gli eventi Tab. Sto usando l'API ui.prompt()
di Mercurial, che sta chiamando lo raw_input()
sotto il cofano.
Per quanto ne so, raw_input()
restituisce solo su "invio" e se un utente immette una scheda, la stringa restituita include semplicemente un "\t"
.
Grazie, questo è esattamente quello che speravo! C'è solo un problema: non riesco a farlo funzionare sul mio sistema principale. Sono su OSX 10.6 con Python 2.6 e inserisce semplicemente un \ 't' normale. Così ho avviato Ubuntu e funziona perfettamente lì - sai se c'è una libreria per questo è un modo più indipendente dalla piattaforma? – Paulitex
I Python forniti da Apple non usano la libreria GNU readline; usano invece la libreria editline derivata da BSD. I programmi di installazione di Python per OS X di python.org usano GNU readline, così come i recenti Python installati con MacPorts. –