Vor einigen Monaten schrieb ich eine blog post Detaillierung, wie Tab-Vervollständigung in der Standard-Python Interactive Interpreter - eine Funktion, die ich dachte, nur in IPython verfügbar. Ich habe es sehr nützlich gefunden, da ich manchmal aufgrund von IPython-Unicode-Problemen zum Standard-Interpreter wechseln muss.Tab-Vervollständigung in Python-Interpreter in OS X Terminal
Kürzlich habe ich einige Arbeit in OS X gemacht. Zu meiner Unzufriedenheit, das Skript scheint nicht für OS X-Terminal-Anwendung zu arbeiten. Ich hoffe, dass einige von Ihnen mit Erfahrung in OS X mir dabei helfen können, Probleme damit zu beheben, damit es auch im Terminal funktionieren kann.
Ich reproduzieren Sie den Code unten
import atexit
import os.path
try:
import readline
except ImportError:
pass
else:
import rlcompleter
class IrlCompleter(rlcompleter.Completer):
"""
This class enables a "tab" insertion if there's no text for
completion.
The default "tab" is four spaces. You can initialize with '\t' as
the tab if you wish to use a genuine tab.
"""
def __init__(self, tab=' '):
self.tab = tab
rlcompleter.Completer.__init__(self)
def complete(self, text, state):
if text == '':
readline.insert_text(self.tab)
return None
else:
return rlcompleter.Completer.complete(self,text,state)
#you could change this line to bind another key instead tab.
readline.parse_and_bind('tab: complete')
readline.set_completer(IrlCompleter('\t').complete)
# Restore our command-line history, and save it when Python exits.
history_path = os.path.expanduser('~/.pyhistory')
if os.path.isfile(history_path):
readline.read_history_file(history_path)
atexit.register(lambda x=history_path: readline.write_history_file(x))
Bitte beachte, dass ich es leicht von der Version auf meinem Blog-Post bearbeitet haben, so dass die IrlCompleter
mit einem echten Tab initialisiert, das, was zu sein scheint Ausgang ist durch die Tabulatortaste im Terminal.
Ah, vielen Dank für die Erklärung, warum das nicht funktioniert. :-) – gotgenes
Es scheint, dass es in Macports kein Python mit TabCompletion gibt:% port variants python26% gibt nur darwin, universal und ucs4 packages. - Wie können Sie Python mit Tab-Vervollständigung von MacPorts installieren? –
@Masi, Registerkarte Vervollständigung ist keine Port-Variante, es ist etwas, das Sie nach der Tat konfigurieren. Siehe http://docs.python.org/library/rlcompleter.html – mpontillo