替换 zsh 中要执行的命令中的字符串

men*_*ith 3 command-line zsh oh-my-zsh

假设我已经编写了以下命令,但还没有按 Enter 键来执行它:

$ ls dir1 dir2 dir3
Run Code Online (Sandbox Code Playgroud)

有没有办法替换给定的字符而无需在它们所在的每个位置手动更改它们?例如,我想按一些快捷方式,输入要替换的字符串(比如,dir),然后输入另一个字符串作为替换(比如“目录”)。

Sté*_*las 5

有一个可replace-string自动加载的小部件。添加到您的~/.zshrc

autoload replace-string
zle -N replace-string
zle -N replace-string-again
bindkey '\eg' replace-string-again
bindkey '\er' replace-string
Run Code Online (Sandbox Code Playgroud)

然后按Alt+r调用。Alt+g重复最后一次替换。详情请参阅info zsh replace-string