2017-03-22 100 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。