我(滥用)使用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 中表达这一点。