![](/img/trans.png)
[英]Wrapping stdin/stdout causes IPython to lose auto completion and history features
[英]ipython history completion working partially
由於某種原因,在我使用的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,但在完成其他命令時仍無法完成某些命令...
TL; DR版本:
ipython對存儲在歷史記錄中的行有一個單獨的配置,而不是它用於加載代碼完成的行,我創建了一個ipython配置文件,必須手動提高已加載的完成行的數量:
c.InteractiveShell.history_load_length = 50000
這是完整的故事:
ipython實際上有2個單獨的影響代碼完成的配置。
一個用於存儲多少歷史記錄(出於某種原因,該歷史記錄存儲在我定義的數量上)。 另一個也是更重要的一個-是要在啟動時加載的行數,這是命令完成時實際使用的行數。
要查看這兩個值,我必須運行:
%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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.