Поскольку он использует libedit / editline, синтаксис для включения автозаполнения немного отличается.Сначала вы можете форсировать привязки emacs (как это делается с readline, если я не ошибаюсь), набрав:
readline.parse_and_bind("bind -e")
Затем вы можете добавить автозаполнение, связанное с вашей кнопкой TAB (man editrc):
readline.parse_and_bind("bind '\t' rl_complete")
И если вы хотите поддерживать отступ и иметь историю (найденную в интернете), она должна выглядеть так (если я не ошиблась):
import readline,rlcompleter
### Indenting
class TabCompleter(rlcompleter.Completer):
"""Completer that supports indenting"""
def complete(self, text, state):
if not text:
return (' ', None)[state]
else:
return rlcompleter.Completer.complete(self, text, state)
readline.set_completer(TabCompleter().complete)
### Add autocompletion
if 'libedit' in readline.__doc__:
readline.parse_and_bind("bind -e")
readline.parse_and_bind("bind '\t' rl_complete")
else:
readline.parse_and_bind("tab: complete")
### Add history
import os
histfile = os.path.join(os.environ["HOME"], ".pyhist")
try:
readline.read_history_file(histfile)
except IOError:
pass
import atexit
atexit.register(readline.write_history_file, histfile)
del histfile