出于某种原因,在我使用的ipython shell中,我可以找到某些命令,但它并不关心完成它们。
例如:
hist -g bla
给了我以下历史记录:
659/1: import os as bla
与
一起使用rerun 659/1
但是当我输入
时import os as
然后点击向上箭头,它拒绝完成该行,即使hist命令清楚地找到它。
原因可能是什么?有没有办法让我恢复除了手动使用hist -g之外的命令,并将其重新粘贴到终端中?
向上箭头可以完成更新的命令,即使长度足够大(10000行)也可以完成更早的命令。
更新: 尝试从头开始创建一个CLEAN history.sqlite文件,并为所有命令的每一行创建history.store_inputs,但在完成其他命令时仍然没有完成某些命令...
答案 0 :(得分:1)
TL; DR版本:
对于存储在历史记录中的行,ipython有一个单独的配置,而不是用于加载代码完成的行,我创建了一个ipython配置文件,并且必须手动提高已加载完成行的编号:
c.InteractiveShell.history_load_length = 50000
以下是完整的故事:
ipython实际上有2个独立的配置影响代码完成。
一个用于存储多少历史记录(由于某种原因存储在我定义的数字上)。 另一个也是更重要的一个 - 是LOAD AT STARTUP的行数,它实际上用于命令完成。
要查看我必须运行的这两个值:
%config TerminalInteractiveShell.history_load_length
%config TerminalInteractiveShell.history_length
要更改它,我必须运行两个命令(之前没有配置文件):
ipython profile create
在路径
中创建默认的ipython_config.py文件~/.ipython/profile_default/ipython_config.py
如果你不知道你的个人资料在哪里,你可以运行
ipython locate profile default
获取它的完整路径并找到配置文件。
您需要做的最后一件事是取消注释并编辑该行:
c.InteractiveShell.history_load_length = 50000
我个人认为50000希望我永远不会打到这个,但当然是由你决定。
我的默认值是1000。