Tengo una especie de clase completa con una función de autocompletado. Versión sencilla:¿Cómo hacer que la visualización de autocompletado de Python coincida?
class Completer:
def __init__(self):
self.words = ["mkdir","mktbl", "help"]
self.prefix = None
def complete(self, prefix, index):
if prefix != self.prefix:
self.matching_words = [w for w in self.words if w.startswith(prefix)]
self.prefix = prefix
else:
pass
try:
return self.matching_words[index]
except IndexError:
return None
y ejecutar algo como esto para conseguir la finalización automática con readline:
import readline
readline.parse_and_bind("tab: complete")
completer = Completer()
readline.set_completer(completer.complete)
user_input =raw_input("> ")
Por lo tanto, hay 3 palabras para el completado automático [ "ayuda", "mkdir "," mktbl "] en el ejemplo.
si un usuario ejecuta:
> he<tab>
el usuario obtiene:
> help
pero si el usuario ejecuta
> mk<tab>
no pasa nada, porque no hay un solo partido (mkdir y mktbl)
¿Cómo mostrar opciones en caso de que haya varias coincidencias? ¿Como el Bash con un autocompletado de nombres de archivo?
Así usuario whold obtener algo como:
> mk<tab>
mktbl mkdir
> mk<cursor>
P. S. He tratado de poner
_readline.insert_text (...) _
y
de impresión ...
en función más completa pero los frenos de la inserción, por lo que un usuario obtiene algo como esto:
> mk<tab>
> mkmktbl mkdir <cursor>
PPS Necesito una solución de Linux.
Esta no es una respuesta completa, y puede ser exagerado por algo tan simple, pero usar 'curses' es una buena (aunque compleja) forma de hacer este tipo de cosas: http://docs.python.org /library/curses.html Eche un vistazo al tutorial aquí: http://docs.python.org/howto/curses.html#curses-howto –
¡Podría ser! ¡Gracias! Pero estamos absolutamente satisfechos con la funcionalidad que readline proporciona. Y lo único que necesitamos es mostrar esta opción en el autocompletado. Investigamos las maldiciones, pero en realidad es demasiado complejo para una pequeña cosa como esta. – MajesticRa
Pregunta interesante, he tenido ideas sobre algo similar. – Skurmedel