Zsh和Bash中的Alt+number+dot和Alt+逗号

Zsh和Bash中的Alt+number+dot和Alt+逗号,bash,keyboard-shortcuts,zsh,oh-my-zsh,Bash,Keyboard Shortcuts,Zsh,Oh My Zsh,在Bash中,我们可以使用Alt+number+。选择上一个命令的第n个参数,以及选择上一个命令的Alt+。他们在历史中循环往复 例如: $ ls 1 2 $ echo 10 20 现在按住Alt键,然后按0键,然后点,它将显示echo。在不释放Alt的情况下,按。同样,它将显示ls。在同一操作中使用1将显示10和1等。按Alt和逗号将显示历史记录中的整个命令行。还有Alt和。显示历史记录中命令的最后一个参数 请注意,所有这些操作都只是将参数或整个命令行插入当前光标。它们不会更改当前命令行中已

在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+。与Bash显示comman相同,但是 Alt+number+。显示最后第n个参数,即Alt+1+。在上面 案例显示20和2

Alt+不会在历史记录中显示全部命令


如何在Zsh中执行相同的操作?谢谢。

寻找Christian Neukirchen提供的这一功能:

一,。你可能知道M-。插入上一行的最后一个参数。有时,您需要插入不同的参数。有几个选项:使用历史扩展,例如!:-2对于行中的第三个单词,如果您不确定,请使用“使用”选项卡将其展开,或者使用M-。带前缀参数:M-2m-

但更好的是:

autoload -Uz copy-earlier-word
zle -N copy-earlier-word
bindkey "^[m" copy-earlier-word
然后,M-M将复制当前行的最后一个字,然后是第二个最后一个字,以此类推,但使用M-。你也可以排队回去!因此:

% echo a b c
% echo 1 2 3
% echo <M-.><M-.><M-m>
% echo b

因此,请检查这些选项是否出现,然后重试。您可以使用显示的bindkey命令的输出更新原始问题,以帮助缩小问题范围,或者直接在中打开一个问题,并提供详细信息。

Alt comma默认情况下不绑定到我知道的任何内容。历史记录中最后一个命令的默认绑定是ctrl-p,如果返回太远,则ctrl-n是历史记录中的下一个命令,等等。。例如,请参见bash手册中的。bind-q以前的历史输出为您提供了什么?我知道以前的历史记录可以通过\C-p、\eOA、\e调用[A..Learn zle and bindkey。zle比bash/readline强大得多,可自定义得多,这是我唯一要说的。Ctrl-p和Ctrl-n的工作原理与bash相同。它们只是用历史上的最后一个/下一个命令替换了当前的命令行。我想我必须学习zle和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