52

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

4

7 回答 7

93

点击Ctrl+R,输入一些字母,它会找到带有这些字母的上一个命令,继续按 Ctrl+R 继续查看之前的结果。
适用于 bash、zsh(以及我想的其他 shell)。

我个人喜欢的是:输入一些字母,按Up,出现以前以相同字母开头的命令。很给力,我喜欢。
你必须绑定你想要的键history-beginning-search-backwardhistory-beginning-search-forward.

如果这对您来说还不够,zsh 有很多选择,请尝试在Zsh Line Editor中查看并告诉我们。
对于 bash,功能较弱但更常见的是历史的 Bash 命令

于 2012-12-26T14:24:46.603 回答
12

使用感叹号:

> !<starts-with this string>

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

除了匹配字符串的开头之外,您还可以使用问号进行搜索,

> !?status

可以找到“git status”。

于 2013-01-22T23:05:59.140 回答
7

使用percolCtrl通过-动态搜索和浏览您的历史记录r

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

Ctrl-之后r,您可以在同一窗口中查看整个历史记录。搜索关键字(动态)缩小了该列表的范围。您可以使用键绑定(如emacs like config)在列表中上下导航并最终做出选择。

这是一个搜索sudo install历史记录中所有可用的命令sudo make install

percol_history_search_example

Enter发出选定的命令。

于 2015-11-22T17:58:16.540 回答
6

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

于 2015-11-26T10:10:35.110 回答
5

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

于 2012-12-26T12:21:20.373 回答
3

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

以下是安装方法:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

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

于 2021-03-23T03:24:42.520 回答
2

如果您不想添加任何键绑定,则可以默认使用Ctrl+R向后移动和Ctrl+S向前移动进行搜索。

您可以使用任何快捷键Ctrl+RCtrl+开始搜索S

于 2018-07-18T06:56:53.083 回答