ipython历史完成部分工作

时间:2017-03-22 12:50:08

标签: python ipython

出于某种原因,在我使用的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,但在完成其他命令时仍然没有完成某些命令...

1 个答案:

答案 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。