2017-03-22 91 views
0

出于某种原因,在我使用的ipython shell中,我可以找到某些命令,但它并不在意完成它们。ipython历史完成部分工作

的例子是:

hist -g bla 

给了我下面的历史行:

659/1: import os as bla 

rerun 659/1 

但是当我键入

import os as 
工作

然后按向上箭头,它拒绝完成该行,即使hist命令清楚地发现它。

这可能是什么原因造成的?有没有办法让我恢复命令,而不是手动使用hist -g为每个命令并将其复制粘贴到终端中?

向上的箭头可以完成更新的命令,尽管长度应该足够大(10000行)以完成更早的命令。

UPDATE: 试图从头开始创建一个干净history.sqlite文件,history.store_inputs对所有命令的每一行,仍然不能完成某些命令同时也会完成其他...

回答

0

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。