bpython 中有一个称为 rewind 的功能。
是否有一些类似的按键绑定?
答案1
简短回答:不,IPython 没有这个功能。
但是,根据我对 bpython 文档的理解,它们的倒带实际上并不是倒退,而是重新开始并重播到会话中较早的某个时间点。如果确实如此,那么在 IPython 中,您可以通过重置并重新运行历史记录来执行类似操作:
def rewind(ip,s =''): “”“尝试将 IPython 重置为较早的状态 通过重置 IPython 并重放 历史记录直至(但不包括)指定的索引。 “”” 如果: 停止 = 最小值(int(s),ip.execution_count) 别的: # 默认备份 1 停止 = ip.执行计数-1 # 获取历史记录 hist = 列表(ip.history_manager.get_range(stop=stop)) # 重置 IPython ip.重置() ip.执行计数=0 # 重播历史 对于 _,i,hist 中的单元格: ip.run_cell(单元格,store_history=True) # 将此函数公开为 %rewind get_ipython().define_magic('倒带',倒带)
然后在稍后调用%rewind 6
,您应该让 IPython 回到输入 #6 之前的状态。这个实现远非完美,因为我只是把它拼凑在一起(例如,它不会抑制回溯或重放单元的输出),但它应该是一个开始。