ipython:更改PageDown/PageUp以在命令历史记录中前后移动
在我的shell(ipython:更改PageDown/PageUp以在命令历史记录中前后移动,python,ipython,prompt-toolkit,Python,Ipython,Prompt Toolkit,在我的shell(zsh)或python中,我可以通过按PageDown向后浏览命令历史,也可以通过按PageUp向前浏览 但是在ipython中,这些快捷方式是相反的 这些快捷键是为ipython定义的,我如何将它们反转回去,以便 PageDown可以追溯到历史,PageUp可以追溯到历史 我正在Debian 10上使用ipython3版本5.8.0。在IPython版本5.x中,文档中提到了这一点: 要获取要绑定到的函数,请参见key\u binding/bindings/basic.py:
zsh
)或python
中,我可以通过按PageDown向后浏览命令历史,也可以通过按PageUp向前浏览
但是在ipython
中,这些快捷方式是相反的
这些快捷键是为ipython
定义的,我如何将它们反转回去,以便
PageDown可以追溯到历史,PageUp可以追溯到历史
我正在Debian 10上使用
ipython3
版本5.8.0
。在IPython版本5.x中,文档中提到了这一点:
要获取要绑定到的函数,请参见key\u binding/bindings/basic.py
:默认值为
handle(“pageup”,filter=~具有\u选择)(按\u名称获取\u(“以前的历史记录”))
handle(“pagedown”,filter=~具有\u选择)(按\u名称获取\u(“下一个历史记录”))
因此,将此代码放在:
从IPython导入获取
从提示符_toolkit.filters导入
从prompt_toolkit.keys导入密钥
从提示符_toolkit.key_binding.bindings.named_命令导入按_名称获取_
registry=get\u ipython().pt\u cli.application.key\u bindings\u注册表
registry.add_绑定(Keys.PageUp,filter=~HasSelection())(通过_名称(“下一个历史记录”)获取_)
registry.add_绑定(Keys.PageDown,filter=~HasSelection())(通过_名称(“以前的历史”)获取_)
在较新的IPython版本(如7.19.0)上,将注册表=…
行替换为
registry=get\u ipython().pt\u app.key\u绑定
参考:在
~/.ipython/profile\u default/startup
目录中创建脚本,任何名称以扩展名.py
或.ipy
结尾
例如,我创建了history\u keybindings.py
并将其放入~/.ipython/profile\u default/startup
目录中
从IPython导入获取
从IPython.terminal.shortcuts导入上一个\历史\或\上一个\完成、下一个\历史\或\下一个\完成
从prompt_toolkit.keys导入密钥
从提示符_toolkit.filters导入
ip=get_ipython()
注册表=无
如果(getattr(ip,“pt_应用程序”,无)):
#对于IPython 7.x版
注册表=ip.pt\u app.key\u绑定
elif(getattr(ip,'pt_cli',None)):
#对于IPython版本5.x
注册表=ip.pt\u cli.application.key\u绑定\u注册表
如果注册处:
registry.add_绑定(Keys.PageUp,filter=(~HasSelection())(上一个_历史记录或上一个_完成)
registry.add_绑定(Keys.PageDown,filter=(~HasSelection())(next_history_或next_completion)
注意:有关更多信息,请查看您的python版本。@Chandan-
python 3.7.3
您的操作系统是什么?Debian 10@Chandantry在ipythonrc
文件-readline\u parse\u和\u bind“\e[5~”:历史向后搜索,readline\u parse\u和\u bind”\e[6~”:历史向前搜索
可能相关:我得到此错误:AttributeError:“TerminalInteractiveShell”对象没有属性“pt_app”
@400theCat在那里…仍然不工作:AttributeError:“CommandLineInterface”对象没有属性“key_bindings”
@400theCat我已经更新了答案,请重新检查谢谢。