Otomatik tamamlama işlevi olan bir tamamlayıcı sınıfım var. Basit versiyon:Python otomatik tamamlama ekranı nasıl eşleştirilir?
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
Ve taleb ile otomatik tamamlama almak için böyle bir şey yürütün:
import readline
readline.parse_and_bind("tab: complete")
completer = Completer()
readline.set_completer(completer.complete)
user_input =raw_input("> ")
Yani, otomatik tamamlama [ "yardım" için 3 kelime var, "mkdir Örnekte "," mktbl "].
kullanıcı yürütür eğer:
> help
ancak kullanıcı
> mk<tab>
şey yürütür eğer tek maç (mkdir ve mktbl) olmadığı için oluyor:
> he<tab>
kullanıcı alır
Birkaç eşleşme olması durumunda seçenekler nasıl görüntülenir? Bash gibi bir dosya isimleri otomatik tamamlama ile yapmak?
Böylece kullanıcı gibi bir şey elde whold:
> mk<tab>
mktbl mkdir
> mk<cursor>
P.S. Ben
_readline.insert_text koymak için çalıştık (...) _
ve
baskı ...
completer fonksiyonu içine ancak frenler yerleştirme, bu yüzden bir kullanıcı böyle bir şey olur:
> mk<tab>
> mkmktbl mkdir <cursor>
PPS bir linux çözüm gerekir.
Bu tam bir yanıt değil, ve bu basit bir şey için aşırı sıkıcı olabilir, ancak 'küfür' kullanmak bu tür bir şey yapmak için iyi (karmaşık olsa da) bir yoldur: http://docs.python.org /library/curses.html Buradaki eğiticiye bir göz atın: http://docs.python.org/howto/curses.html#curses-howto –
Olabilir! Teşekkür ederim! Ancak, readline'ın sağladığı işlevsellikten kesinlikle memnunuz. Ve ihtiyacımız olan tek şey bu seçenekleri otomatik tamamlamada görüntülemek. Lanetlere baktık ama bunun gibi sadece küçük bir şey için gerçekten çok karmaşık. – MajesticRa
İlginç bir soru, benzer bir şey hakkında fikirlerim vardı. – Skurmedel