Zsh 如何重复上一个命令的最后一部分?

Zsh 如何重复上一个命令的最后一部分?,zsh,Zsh,我在Robby Russell的框架中使用zsh。如何创建快捷方式或其他方法来重复命令的最后一部分 例如,如果我键入: mv something in/this/difficult/to/type/directory 有什么方法可以轻易地得到这个:在/this/combard/to/type/directory中?$提供上一个命令的最后一个参数 例如: $ echo hello world hello world $ echo !$ echo world world % echo hello

我在Robby Russell的框架中使用zsh。如何创建快捷方式或其他方法来重复命令的最后一部分

例如,如果我键入:

mv something in/this/difficult/to/type/directory

有什么方法可以轻易地得到这个:在/this/combard/to/type/directory中?

$提供上一个命令的最后一个参数

例如:

$ echo hello world
hello world
$ echo !$
echo world
world
% echo hello world  
hello world

% echo !*  
(expands to)-> % echo hello world
hello world

我刚刚进行了测试,看起来您可以用与bash相同的方法来完成:
$

我也遇到了这个问题-我一直使用
Alt.
在bash中插入最后一个单词。找到了oh my zsh覆盖的地方

在lib/key-bindings.zsh中,注释掉这个,它应该像在bash中一样工作:

bindkey-s'\e.'。\n“

添加bindkey“\e.”在.zshrc中插入最后一个单词

-sp3ctum,在注释中*提供最后一个命令的所有参数

例如:

$ echo hello world
hello world
$ echo !$
echo world
world
% echo hello world  
hello world

% echo !*  
(expands to)-> % echo hello world
hello world
也可以与
zsh
噢,我的zsh
一起开箱即用

无论您是在bash还是在zsh中,都可以使用
运算符以恢复上一个命令的参数:

如果我们以:
echoabcd
为例

  • $-最后一个参数:d
  • !:*-所有参数:a b c d(可以缩短
    !*
  • !:1
    -第一个参数:a(与
    相同)!^
  • !:1-3
    -从第一个到第三个参数:a b c
  • !:2-$
    -从第二个参数到最后一个参数:b c d
最后一点回答您的问题,您可以执行命令的最后一部分


注意:
!:0
是执行的最后一个命令,在我们的示例中,它将是echo

仅扩展@Charles Gueunet answer

  • -重复最后一个命令的全部内容
如果您忘记将
sudo
添加到命令的开头,这将非常有用。简单的例子:

$ cat /some/root/owned/thing/with/a/long/path
Permission denied
$ sudo !!
here's the conent

如果您在这里寻找zsh交互式shell上粘贴最后一个命令的最后一个单词,也许这就是您的答案

任何zsh中都已经配置了默认快捷方式(或者如果您安装了oh my zsh,我不太确定)。
若要检查是否安装了此快捷方式,请在“绑定键”中搜索“插入上一个工作”

使用此快捷键时,可以粘贴上一个命令中使用的最后一个单词。
例如:


很好,但我喜欢在bash中按下“ALT”键的方式。ALT句号?İ我想我以前听说过,但在我的机器上不起作用。@凯文:你的元键映射可能有点问题。
ALT+f
做什么?关于
ESC+。
?@Carlo Zsh在其默认设置中有相同的键绑定。@kentor我相信它是
setopt nohistverify
或add
bindkey'\e。
insert last word
到您的.zshrc。@sp3ctum您的评论是最好的答案,我意识到它已经过时了,但@sp3ctum解决方案似乎是唯一适合我的解决方案。如果你添加它作为一个答案,我会接受它,这样你可以在运行它之前看到argunet!这里只是一个额外的注释,至少在键入
后使用Oh my Zsh参数您可以通过点击
选项卡将其展开。在最后一行中,您的意思是
!:0
?@babbata,抓得好!我已经把这个固定在身体里了。谢谢:)