Alt + . (点)显示 &,而不是之前的参数

Alt + . (点)显示 &,而不是之前的参数

我(滥用)使用Alt+.来恢复上一个命令中的最后一个参数(我正在使用中兴): 例如,

$ convert img.png img.pdf
$ llpp (alt + .) # which produces llpp img.pdf

但有时我会用以下命令查看 pdfllpp

$ llpp pdffile.pdf& 

然后如果我尝试做其他事情pdffile.pdf我就会遇到麻烦

$ llpp (`Alt` + `.`) # produces llpp &

那么,有什么方法可以pdffile.pdf使用类似于Alt+ 的东西来恢复吗.

$ echo $SHELL
/usr/bin/zsh
$ echo $TERM
xterm

答案1

ESC-.insert-last-word) 将任何空格分隔或可空格分隔的 shell 标记 1 视为“单词”,包括标点符号标记,例如&.

您可以给它一个数字参数来获取最后一个单词以外的单词。正数参数从右边开始计数:Alt++相当于+1 Alt.Alt.Alt+2 Alt +.抓取前一个单词,等等。Alt+ 0 Alt+.是前一个单词,负参数从左侧继续,例如Alt+ - Alt+ 1 Alt+.是第一个参数。

我有copy-earlier-word势必ESC-,。如果重复调用ESC-.insert 历史记录中连续命令的最后一个单词,则重复调用ESC-,after ESC-.insert 同一命令的前一个单词。因此,在您的 中使用以下代码,您可以使用+ +.zshrc获取上一个命令的倒数第二个单词。Alt. Alt,

autoload -U copy-earlier-word
zle -N copy-earlier-word
bindkey '^[,' copy-earlier-word

1在这种情况下,“令牌”有几个合理的定义。在这个答案中,我将采用“insert-last-word被认为是一个单独的词的东西”的定义。

答案2

在 bash 中,可以在操作前面添加一个数字参数。

因此, will 的否定论证-1将解决该论证

您输入:

Alt- -- 1 Alt-.

或者简单地:

Alt- - Alt-.

我不知道如何在 zsh 中表达这一点。

相关内容