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

Car*_*rlo 44 zsh

我正在使用zsh和Robby Russell 的oh-my-zsh框架.如何创建快捷方式或重复命令的最后部分?

例如,如果我输入:

mv something in/this/difficult/to/type/directory
Run Code Online (Sandbox Code Playgroud)

有没有办法轻松搞定:in/this/difficult/to/type/directory?

Kev*_*vin 45

我刚测试过,看起来你可以像在bash中那样做:!$.

  • 相当不错,但我喜欢在bash中我只能按"ALT". (7认同)
  • @Kevin:你的元键映射可能很棘手."ALT + f"做什么?那么`ESC + .`怎么样? (4认同)
  • @kentor我相信这是'setopt nohistverify` (4认同)
  • @Carlo Zsh在其默认设置中具有相同的键绑定. (2认同)

Cha*_*net 21

如果您使用bashzsh,则可以使用!运算符恢复上一个命令的参数:

如果我们采取:echo a b c d作为一个例子

  • !$- 最后一个论点:d
  • !:*- 所有参数:abcd(可以缩短!*)
  • !:1- 第一个参数:a(相同!^)
  • !:1-3- 从第一到第三的论点:abc
  • !:2-$- 从第二个到最后一个的参数:bcd

最后一点回答你的问题,你可以采取命令的最后一部分.

注意:$:0是最后执行的命令,这里它将是我们示例中的echo

  • 这里只是一个附加注释,至少在 Oh my Zsh 中输入“!”参数后,您可以点击“tab”将其展开。 (2认同)

Dav*_*ave 20

!*给你最后一个命令的所有参数.

例:

% echo hello world  
hello world

% echo !*  
(expands to)-> % echo hello world
hello world
Run Code Online (Sandbox Code Playgroud)


dog*_*ane 13

!$ 为您提供上一个命令的最后一个参数.

例:

$ echo hello world
hello world
$ echo !$
echo world
world
Run Code Online (Sandbox Code Playgroud)


小智 13

添加bindkey'\ e.' 将_-last-word插入到.zshrc中

- sp3ctum,在这里发表评论


Bri*_*Ray 8

我也碰到了这个 - 我总是用Alt.bash中的insert-last-word.发现oh-my-zsh覆盖了这个地方.

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

bindkey -s '\e.' "..\n"

  • 或者添加`bindkey'\ e.' insert-last-word`到你的.zshrc. (19认同)
  • @ sp3ctum你的评论是IMO的最佳答案 (3认同)

ha7*_*ilm 5

<esc>.也可以使用zsh和进行操作oh-my-zsh

  • 这样你就可以在运行之前看到争论! (2认同)