Pythonで補完できる使い勝手の良いCUIアプリを
自分で作ったCUIアプリで補完が欲しいと思ってたら それっぽいもの があった.
ここ のSimpleCompleterを使えば良いのだけど, 単純なので良ければbisectを使うともうちょっとうまく書けると思う.
:::python
import readline
import bisect
def complete(c):
c.sort()
def f(text, state):
i = bisect.bisect_left(c, text) + state
if c[i].startswith(text):
return c[i]
return f
readline.parse_and_bind("tab: complete")
readline.set_completer(complete(["test", "emacs", "cat", "vim", "tee", "touch", "env", "cp", "ctags", "evince", "eval", "vlc"]))
print raw_input("intput: ")
raw_inputがTabで補完できるようになります. とりあえずで作ったツールが意外と長々と使うこともあるのでコレぐらいで便利になるのであれば積極的に使いたいですね.
初期化字のソートさえなんとかなれば補完対象が多くても二分探索してるから大丈夫なはず. 補完候補リストを破壊的にソートしちゃうけどまぁいいか.