2013-05-03 97 views
3

IPython的history-search-backward功能是我最喜欢的功能之一。 history-search-backward允许您键入命令的一部分,然后向后搜索readline历史记录,以查找以命令的该部分开始的命令。默认情况下(我相信)这些绑定到UpArrowCtrl + PDownArrowCtrl + N(分别为向后和向前)。IPython的历史记录搜索后退不能正常工作

他们不适合我。相反,他们只是直线走过我的历史,而不是考虑到我已经输入的字符(全部)过滤我的历史。

我在Arch Linux上从XTerm中运行IPython 0.13.2(使用Python 2和3)。

如果我打EscapeCtrl + P,然后UpArrowDownArrow工作正是我希望他们。

此外,如果我改变我的ipython_config.py包括

c.TerminalInteractiveShell.readline_parse_and_bind = ['"\\e[B": history-search-forward', '"\\e[A": history-search-backward'] 

然后我可以做EscapeUpArrow所期望的行为。 (Here's the rest of my config file。)

Ctrl + VUpArrow产生^[[A如我期望。我安装了python readline库(这似乎解决了运行IPython的mac的常见问题)。

我在.bashrc

bind '"\e[A": history-search-backward' 
bind '"\e[B": history-search-forward' 

这些线条和他们工作完全因为我希望他们bash内。

我不知道还有什么可以尝试下,所以我来到这里。请帮助,我希望我已经包含了足够的信息并做了足够的研究。

+0

您可能还想检查'.inputrc'文件 - 这可能会影响它。 – 2013-05-03 11:50:34

+0

好吧,我的'.inputrc'只有 'set editing-mode vi'和 'set keymap vi' – 0xtobit 2013-05-03 20:21:50

回答

1

罪魁祸首是set keymap vi设置在我的.inputrc。我删除了这个,IPython的历史回到了我的预期。感谢@Thomas K