按命令过滤ZSH历史记录

Guu*_*Guu 41 history filtering zsh

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

lol*_*que 75

点击Ctrl+R,键入一些字母,它会找到上面带有这些字母的命令,按住Ctrl + R继续通过之前的调查结果.
在bash,zsh(和我想的其他shell)中工作.

我个人喜欢的是:输入一些字母,按Up,之前的命令以相同的字母开头.非常强大,我喜欢它.
你必须绑定你想要的键history-beginning-search-backwardhistory-beginning-search-forward.

如果它对您来说还不够,zsh有很多选项,请尝试查看Zsh Line Editor并告诉我们.
对于bash,功能较弱但更常见的Bash命令用于历史记录.

  • 如果你在zsh中使用Vim绑定,`CTRL + R`将无法正常工作.如果是的话,尝试将`bindkey'^ R"history-incremental-search-backward`添加到〜/ .zshrc文件中. (14认同)
  • 有关将键绑定设置为Up的说明,请参见[此答案](http://stackoverflow.com/a/14041933/461834)。您需要看起来像`bindkey“ ^ [[A” history-beginning-search-backward`和`bindkey“ ^ [[B” history-beginning-search-forward`“的行。而不是键入`^ [[A`,而是要在终端编辑器中按Ctrl + V,向上以获取正确的键控代码。 (2认同)

zja*_*ish 10

使用感叹号:

> !<starts-with this string>
Run Code Online (Sandbox Code Playgroud)

您可以向上/向下浏览以此开头的所有命令.我一直使用"!v"来获取我之前用Vim打开文件的命令.

您还可以使用问号搜索以匹配字符串的开头,

> !?status
Run Code Online (Sandbox Code Playgroud)

可以找到"git status".

  • 这对我不起作用.我键入!vi并按下Up,我看到上一个命令,而不是以"vi"开头的上一个命令.是否有一个设置我必须打开这个工作? (3认同)
  • 该语法记录在哪里? (2认同)

jdh*_*hao 8

我们还可以使用fzf来交互式地模糊搜索命令历史记录。

安装方法如下:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
Run Code Online (Sandbox Code Playgroud)

对它的所有配置说“是”。之后,重新启动您的 zsh shell,然后按Ctrl-R,哇哦,会弹出交互式命令历史搜索。享受!


Fro*_*ost 5

这是的功能,但似乎有人为它制作了一个zsh插件.它不适用于标准ZSH.


mih*_*hai 5

使用percol通过Ctrl- 动态搜索和浏览历史记录r

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

Ctrl-之后r,您可以在同一窗口中查看整个历史记录。(动态)搜索关键字会缩小列表的范围。您可以使用键绑定(例如emacs之类的 config)来在列表中上下移动并最终进行选择。

这是对sudo install历史记录中所有可用命令的sudo make install选择。

percol_history_search_example

Enter 发出所选命令。


小智 5

在 zsh 中激活 vim 键绑定后,您可以在 vi 命令模式下使用 vi-history-search-backward (/)。

  • 这实际上很棒。然后你可以按“n”转到下一个项目。但不确定如何显示所有内容。 (2认同)