[英]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.