2012-12-26 136 views
32

有人告诉我,在ZSH中,你可以做一些类似command的事情,然后当你点击时它会根据给定的命令过滤历史记录。但是当我尝试它时,它只是像bash一样循环历史。这是默认禁用?通过命令过滤ZSH历史

回答

50

点击Ctrl+R,键入一些字母,它会用这些字母找到前一个命令,继续按Ctrl + R继续前面的发现。
工程在bash,zsh(和其他的壳我想)。

我个人喜欢的是:键入一些字母,按Up,先前的命令以相同的字母出现。非常强大,我喜欢它。
你必须绑定你想要的密钥history-beginning-search-backwardhistory-beginning-search-forward

如果你不够,zsh有很多选择,试着看看Zsh Line Editor并告诉我们。
对于bash,功能较弱但较常见,Bash commands for history

+0

完美,谢谢。 – Guu

+1

查看我的答案,与您在第二段中描述的内容非常相似。它执行完整的子字符串搜索,因此它可以匹配命令的任何部分,但应该很容易修改为仅从命令的开头匹配。 – Frost

+12

如果您在zsh中使用Vim绑定,CTRL + R将无法工作。如果你是这样,试着在你的〜/ .zshrc文件中添加'bindkey'^ R“history-incremental-search-backward'。 – croceldon

4

这是fish中的一项功能,但似乎有人为它制作了zsh plugin。它在标准ZSH中不可用。

7

使用感叹号:

> !<starts-with this string> 

您可以通过与发表的所有命令向上/向下箭头。我一直使用“!v”来获得我之前使用Vim打开文件的命令。

你也可以使用一个问号搜索超过字符串的开头匹配,

> !?status 

能找到“混帐地位”。

+3

这对我不起作用。我输入!vi,然后按向上,我看到上一个命令,而不是以“vi”开头的前一个命令。是否有一个设置,我必须打开这个工作? –

+0

@LarryHastings,你必须先按“Enter”。然后你可以按'Up'来查看命令历史记录。 –

+1

该语法在哪里记录? – bennlich

1

使用percol动态搜索和浏览你的历史与按Ctrl导航 - [R

  • 安装珀:sudo pip install percol
  • zsh-history-search代码片段添加到您的.zshrc文件。

经过按Ctrl - [R,你可以看到你的整个历史在同一个窗口。搜索关键字(动态)缩小列表的范围。您可以使用键绑定(如emacs like配置)在列表中上下导航并最终进行选择。

这里是所有sudo install命令的搜索历史与sudo make install选择。

percol_history_search_example

输入问题所选的命令。

2

在zsh中激活vim keybindings时,可以在vi命令模式下使用vi-history-search-backward(/)。