Kann ich in der ipython-Shell wiederherstellen oder rückgängig machen?

1094
iMom0

Eine Funktion in bpython, die als Rücklauf bezeichnet wird.

Gibt es ähnliche Tastenkombinationen?

3

1 Antwort auf die Frage

4
minrk

Kurze Antwort: Nein, IPython hat diese Funktion nicht.

Aufgrund meines Verständnisses der Dokumente von bpython geht ihr Rückspulen jedoch nicht wirklich zurück, sondern beginnt von vorne und wird bis zu einem früheren Punkt in der Sitzung wiedergegeben. Wenn dies tatsächlich der Fall ist, können Sie in IPython etwas Ähnliches tun, indem Sie den Verlauf zurücksetzen und erneut ausführen:

def Zurückspulen (ip, s = ''): "" "Versuch, IPython auf einen früheren Zustand zurückzusetzen  implementiert durch Zurücksetzen von IPython und Wiedergeben der Historie bis (aber nicht einschließlich) zum angegebenen Index. "" " wenn s: stop = min (int (s), ip.execution_count) sonst: # Sicherung 1 standardmäßig stop = ip.execution_count-1 # hol die Geschichte ab hist = list (ip.history_manager.get_range (stop = stop)) # IPython zurücksetzen ip.reset () ip.execution_count = 0 # die Geschichte wiedergeben für _, ich, Zelle in hist: ip.run_cell (cell, store_history = True)  # machen diese Funktion als% Rücklauf verfügbar get_ipython (). define_magic ('zurückspulen', zurückspulen) 

Rufen %rewind 6Sie dann zu einem späteren Zeitpunkt auf, und Sie sollten IPython vor Eingabe # 6 wieder im Status haben. Diese Implementierung ist alles andere als perfekt, weil ich sie einfach zusammengeschmissen habe (zum Beispiel werden keine Tracebacks oder Ausgaben für die wiedergegebenen Zellen unterdrückt), aber es sollte ein Anfang sein.