当前位置:  开发笔记 > 编程语言 > 正文

Zsh和Bash中的Alt +数字+点和Alt +逗号

如何解决《Zsh和Bash中的Alt+数字+点和Alt+逗号》经验,为你挑选了1个好方法。

在Bash中,我们可以使用Alt+ number+ .选择前一个命令的 n 参数,并使用Alt+ ,选择前一个命令。他们循环浏览历史。

例如:

$ ls 1 2
$ echo 10 20

现在按住Alt,然后按0再点,它将显示“ echo”。在不松开的情况下Alt.再次按,将显示“ ls”。在同一操作中使用1将显示10和1,以此类推。按Alt和逗号将显示历史记录中的整个命令行。还Alt.展示历史命令的最后一个参数。

请注意,所有这些操作只是将参数(或整个命令行)插入当前光标。他们不会更改当前命令行中已经存在的内容。

我正在使用Zsh和最新的Oh-My-Zsh软件包,但似乎行为有所不同:

Zsh的Alt+号,表示命令的最后一个参数。

Alt+ 0+ .是相同的击(示出了comman),但 Alt+ number+ .示出的最后n 参数,即,Alt+ 1+ .在上面的情况下示出了20和2。

Alt+ ,不显示在历史上的整个命令。

如何在Zsh中做同样的事情?谢谢。



1> 小智..:

在寻找此功能时,我遇到了Christian Neukirchen的这篇博客文章:

1.您可能知道M-。插入上一行的最后一个参数。有时,您想插入其他参数。有一些选项:使用历史记录扩展,例如,!:-2用于前面一行的第三个单词(如果不确定,请使用TAB对其进行扩展),或使用M-。带有前缀参数:M-2 M-。

但是更好的是:

autoload -Uz copy-earlier-word
zle -N copy-earlier-word
bindkey "^[m" copy-earlier-word

然后,Mm将复制当前行的最后一个单词,然后是第二个最后一个单词,依此类推。但是使用M-。您也可以返回行中!从而:

% echo a b c
% echo 1 2 3
% echo 
% echo b

老兄,我希望我早点知道!

在本文中,M是指Meta密钥,也就是Alt。因此,如Christian所说,从理论上讲,这应该是开箱即用的。所以我去尝试了一下,是的,它确实开箱即用。

负责此行为的zle小部件是insert-last-word?哪个ALT+ .?和digit-argumentALT+ Number

这是相关的bindkey输出:

$ bindkey -L | grep '\^\[[.0-9]'
bindkey "^[." insert-last-word
bindkey "^[0" digit-argument
bindkey "^[1" digit-argument
bindkey "^[2" digit-argument
bindkey "^[3" digit-argument
bindkey "^[4" digit-argument
bindkey "^[5" digit-argument
bindkey "^[6" digit-argument
bindkey "^[7" digit-argument
bindkey "^[8" digit-argument
bindkey "^[9" digit-argument

因此请检查这些内容是否出现,然后重试。您可以使用所示bindkey命令的输出来更新原始问题,以帮助缩小问题范围,或者直接在oh-my-zsh中打开详细信息。

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有