如何在zsh中重复当前输入的参数?

如何在zsh中重复当前输入的参数?

有时我们只需要在使用时输入稍微不同的名称mv/cp/convert。例如,

convert IMG-long-number.jpg  IMG-long-number.png

如何在输入 IMG-long-number.png 之前重复 IMG-long-number.jpg,这样我只需要进行小的调整?

这类似于如何在 bash 控制台上重复当前输入的参数?但对于 zsh/zle 来说。

答案1

!#$<Tab>对我有用。鉴于:

$ echo a

键入!#$然后按下Tab将扩展!#$a。如果您尝试使用以下命令进行操作,制表符补全还会列出其他选项:

$ echo a !#$:
&  -- repeat substitution
A  -- absolute path resolving symbolic links
Q  -- strip quotes
a  -- absolute path
c  -- PATH search for command
e  -- leave only extension
g  -- globally apply s or &
h  -- head - strip trailing path element
l  -- lower case all words
q  -- quote to escape further substitutions
r  -- root - strip suffix
s  -- substitute string
t  -- tail - strip directories
u  -- upper case all words

答案2

另一种需要记住的方法是:你不这样做。

使用完成后得到

转换 IMG-long-number.jpg
只需将其编辑为

转换 IMG-long-number.{jpg,png}

答案3

我会用Ctrl+Alt+_它来复制前一个单词(copy-prev-word小部件)。复制后,您可以使用Backspace编辑副本的扩展名。

或者使用Ctrl+W将其整体删除。默认情况下,Ctrl+W删除整个单词(定义为 alnums+$WORDCHARS),但您可以根据需要使用小部件更改行为select-word-style

~/.zshrc

autoload select-word-style
zle -N select-word-style
bindkey '\eW' select-word-style

然后,您可以选择不同的字型Alt+Shift+W。您可以在这里使用bash单词样式(仅单词alnums)(参考如何bash单词小部件以外Ctrl+W喜欢Alt+BAlt+D...考虑)。

答案4

类似于 @muru 建议的 - !#$<TAB>。但我也在我的 .zshrc 中做了这样的绑定:

bindkey -s "^[," "!#\$^I"

这样,按Escthen 逗号即可为您完成此操作,类似于Escthen 点将为您提供上一个命令的最后一个参数。

相关内容