【问题标题】:ipython history completion working partiallyipython历史完成部分工作
【发布时间】:2017-03-22 12:50:07
【问题描述】:

出于某种原因,在我使用的 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,但仍然无法完成某些命令,而确实完成了其他命令......

【问题讨论】:

    标签: python ipython


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多