有人告诉我在ZSH里可以这样做:command
,然后按上箭头会根据给定的命令过滤历史记录。但是当我尝试时,它只是像bash一样循环显示历史记录。这是默认禁用的吗?
按下 Ctrl+R
,输入一些字母,它会找到包含这些字母的前一个命令,继续按下 Ctrl+R 可以继续查找前面的记录。
适用于 bash、zsh(和其他 shell 吧)。
我个人喜欢的是:输入一些字母,按下 Up
,出现以相同字母开头的前一个命令。非常强大,我很喜欢。
你需要将要使用的键绑定到 history-beginning-search-backward
和 history-beginning-search-forward
。
如果这还不够,zsh 有许多选项,请尝试查看 Zsh 行编辑器 并告诉我们。
对于 bash,历史记录功能不如 zsh 强大,但更为常见,请参阅 Bash 历史命令。
使用感叹号!
> !<starts-with this string>
你可以使用箭头键向上/向下浏览所有以该命令开头的命令。我一直使用"!v"来获取我的先前命令,以便在Vim中打开文件。> !?status
可以找到 "git status"。
man zshexpn
,搜索 !?
。另请参阅 man 页面的源代码:
https://github.com/zsh-users/zsh/blob/master/Doc/Zsh/expn.yo#L170 - ricmagit clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
同意所有配置。然后重新启动您的zsh shell,并按下Ctrl-R
,哇,交互式命令历史记录搜索弹出。享受吧!
sudo pip install percol
Ctrl-r后,您可以在同一窗口中查看整个历史记录。动态搜索关键字会缩小列表。您可以使用键绑定(如emacs样式配置)在列表中上下移动,最终进行选择。
这里是搜索所有可用历史记录中的sudo install
命令,并选择了sudo make install
。
Enter发出所选命令。
n
将会继续向后搜索历史记录。如果你走得太远,N
将会向前搜索。 - PythonJin如果您不想添加任何快捷键绑定,您可以使用Ctrl+R向后搜索,使用Ctrl+S向前搜索。
您可以使用任何一个快捷键Ctrl+R或Ctrl+S开始搜索。
CTRL+R
快捷键不能直接使用。如果是这样的话,可以尝试将bindkey "^R" history-incremental-search-backward
添加到你的~/.zshrc文件中。 - croceldonbindkey "^[[A" history-beginning-search-backward
和bindkey "^[[B" history-beginning-search-forward
这样的行。在终端编辑器中,你需要按Ctrl+V,再按向上箭头来获得正确的键码,而不是直接键入^[[A
。 - jtpereyda"$terminfo[kcuu1]"
(上)和"$terminfo[kcud1]"
(下)在任何较新的发行版上都非常稳定。 - zzxyzfzf
(https://github.com/junegunn/fzf)。它可以在stdin
上进行模糊搜索,并通过 Ctrl-R 键盘快捷键(以及其他方式)完美地集成到 zsh / bash 中。 - DimG