Ipython 我喜欢zsh的完成?

Ipython 我喜欢zsh的完成?,ipython,zsh,tab-completion,Ipython,Zsh,Tab Completion,我想知道是否有一种方法可以在zsh中使用类似ipython的补全 我的意思是,在ipython中,您可以键入几个字符,然后循环查看您的命令历史记录,但这只会影响那些以您首先键入的字符开头的命令。 如果您的历史记录如下所示: token = 'something blah blah' import os token.split() ..然后键入标记并在ipython中循环浏览历史记录,您将只获得第1行和第3行 那么有没有办法让zsh这样工作呢?您可以使用widget历史开始向后搜索和历史

我想知道是否有一种方法可以在zsh中使用类似ipython的补全

我的意思是,在ipython中,您可以键入几个字符,然后循环查看您的命令历史记录,但这只会影响那些以您首先键入的字符开头的命令。
如果您的历史记录如下所示:

token = 'something blah blah'    
import os
token.split()
..然后键入
标记
并在ipython中循环浏览历史记录,您将只获得第1行和第3行


那么有没有办法让zsh这样工作呢?

您可以使用widget
历史开始向后搜索
历史开始向前搜索
。默认情况下,它们不会绑定到任何键,因此您必须使用
bindkey
进行绑定

bindkey "^[[5~" history-beginning-search-backward
bindkey "^[[6~" history-beginning-search-forward
其中,
^[[5~
是向上翻页的代码,
[[6~
是向下翻页的代码。对于您的终端,这些代码可能不同

您可以使用
cat-v
显示非打印字符的代码。也可以使用
zsh/terminfo
模块中的关联数组
terminfo
(可能已经加载了该模块;有关zsh模块的更多信息,请参见
zshmodules(1)
zshbuiltins(1)
)在键
knp
(下一页键)和
kpp
(上一页键)中应包含正确的代码:


老实说,当这些小部件到达历史的开始或结束时,它们不会循环,但您可以双向(考虑到
ipython
也不会循环)这应该不是一个真正的问题。

我担心这不起作用。我修改了我的zshrc,但历史循环的行为方式相同。但是!感谢您的回答,我终于找到了我需要的!这个插件正是我想要的:
if (( ${+terminfo[knp]} )) && (( ${+terminfo[kpp]} )); then
     bindkey "${terminfo[kpp]}" history-beginning-search-backward
     bindkey "${terminfo[knp]}" history-beginning-search-forward
fi