用sudo完成zsh历史记录

用sudo完成zsh历史记录,zsh,zsh-zle,Zsh,Zsh Zle,我想知道是否有一个功能可以让命令和已经输入的参数完成历史记录(通过上下键),这对sudo非常方便,例如: $sudo vim[向上按] -->将完成我的sudo vim.zshrc(如果这是我的最后一个命令),但如果我再次[按向上]我将完成: $sudo ls/ (如果这是我倒数第二个sudo命令) 但我想要的是只完成以sudovim开头的命令。 我希望这是有道理的 这听起来像是“鱼”一样的建议。这是一个例子。与向上箭头相比,此类操作更倾向于tab或Ctrl-D完成 还有一个predict on

我想知道是否有一个功能可以让命令和已经输入的参数完成历史记录(通过上下键),这对
sudo
非常方便,例如:

$sudo vim[向上按]
-->将完成我的sudo vim.zshrc
(如果这是我的最后一个命令),但如果我再次[按向上]我将完成:
$sudo ls/
(如果这是我倒数第二个sudo命令)

但我想要的是只完成以
sudovim
开头的命令。
我希望这是有道理的

这听起来像是“鱼”一样的建议。这是一个例子。与向上箭头相比,此类操作更倾向于
tab
Ctrl-D
完成

还有一个
predict on
Zsh小部件,它将自动填充您上次输入的类似命令。值得尝试:

% autoload predict-on; predict-on

这是功能
上线或搜索的限制。打开
manzshzle
并搜索
上行或搜索
。此命令仅使用第一个单词搜索历史记录

向上
/
向下
键上进行“全行”搜索

autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search # Up
bindkey "^[[B" down-line-or-beginning-search # Down

您可以使用
历史开始向后搜索
小部件进行此操作。它在历史记录中向后搜索与当前行具有相同开头的行,直到光标位置。您可以替换当前绑定或创建新绑定,例如在ShiftUp上(在我的机器上它映射到
^[[a
):

您可能还希望绑定
历史开始向后搜索
小部件,以便能够在历史中双向移动(ShiftDown,
^[[b
在我的机器上):


这不是“sudo”独有的功能。这是功能
上行或搜索
的限制。打开
man zshzle
并搜索
上行或搜索
。此命令仅使用第一个单词搜索历史。
bindkey '^[[a' history-beginning-search-backward
bindkey '^[[b' history-beginning-search-forward