zsh:展开当前命令行中的上一个参数

rob*_*les 11 shell zsh keyboard-shortcuts

我发现自己经常想做一些简单的命令,比如:

cp /really/long/path/from/file.txt /really/long/path/to/file.txt

虽然我已经使用了类似的快捷方式!!,并!$经常,这将是很好能够引用的最后一个参数在目前的命令行(和可选的扩展它进行编辑).有没有办法在zsh中执行此操作,或者其他一些等效的技巧来节省时间?

che*_*ner 24

通常,您可以使用历史记录扩展在当前命令行中引用单个单词.

$ cp /really/long/path/from/file.txt !#:1:s/from/to
Run Code Online (Sandbox Code Playgroud)

要么

$ cp /really/long/path/from/file.txt !#:$:s/from/to
Run Code Online (Sandbox Code Playgroud)

!#是在命令行键入历史扩展至今.:1指定该扩展中的第一个参数(在这种情况下,是长文件路径).:$可以用来代替引用最后一个参数,与目前为止输入的参数数量无关. :s/from/to对所选单词执行文本替换.

对于此任务,您还可以使用大括号扩展:

$ cp /really/long/path/{from,to}/file.txt
Run Code Online (Sandbox Code Playgroud)

(注意:这些都取自bash,但也可以使用zsh.可能还有其他zsh一些我不知道的技巧.)