Hace varios meses, escribí un blog post que detalla cómo lograr la finalización de tabulación en el intérprete interactivo estándar de Python, una función que una vez pensé que solo estaba disponible en IPython. Lo encontré tremendamente útil dado que a veces tengo que cambiar al intérprete estándar debido a problemas de unicode de IPython.Finalización de tabulación en el intérprete de Python en el terminal OS X
Recientemente he hecho algunos trabajos en OS X. Para mi descontento, la secuencia de comandos no parece funcionar para la aplicación de terminal de OS X. Espero que algunos de ustedes con experiencia en OS X puedan ayudarme a solucionar problemas para que también funcione en Terminal.
reproduzco el siguiente código
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))
Tenga en cuenta que he editado un poco desde la versión en mi blog para que el IrlCompleter
se inicializa con un cierto pestaña, que parece ser lo que se emite por la tecla Tab en Terminal.
Ah, gracias por explicar por qué esto no funciona. :-) – gotgenes
Parece que no hay Python con TabCompletion en Macports:% variantes de puerto python26% solo da paquetes darwin, universal y ucs4. - ¿Cómo se puede instalar Python con la finalización de pestañas con MacPorts? –
@Masi, la finalización de pestañas no es una variante de puerto, es algo que se configura después de los hechos. ¡Vea http://docs.python.org/library/rlcompleter.html – mpontillo