Dav*_*vid 4 keyboard-shortcuts zsh line-editor zle
我(ab)使用Alt+.来恢复上一个命令中的最后一个参数(我使用的是ZSH):例如,
$ convert img.png img.pdf
$ llpp (alt + .) # which produces llpp img.pdf
Run Code Online (Sandbox Code Playgroud)
但有时我会用 llpp
$ llpp pdffile.pdf&
Run Code Online (Sandbox Code Playgroud)
然后如果我尝试做其他事情,pdffile.pdf我就会遇到麻烦
$ llpp (`Alt` + `.`) # produces llpp &
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法pdffile.pdf使用类似于Alt+ 的东西来恢复.?
$ echo $SHELL
/usr/bin/zsh
$ echo $TERM
xterm
Run Code Online (Sandbox Code Playgroud)
ESC-.( insert-last-word) 将任何空格分隔或空格分隔的 shell 标记¹视为“单词”,包括标点符号,例如&.
你可以给它一个数字参数来抓取除最后一个词以外的词。积极的辩论从右边数:Alt+ 1 Alt+.相当于Alt+ .,Alt+ 2 Alt+.抓住前一个单词,等等Alt+ 0 Alt+.是之前的字,并负参数继续从左边,如Alt+ - Alt+ 1 Alt+.是第一个参数。
我已经copy-earlier-word绑定了ESC-,。其中重复调用ESC-.插入历史中返回的连续命令的最后一个单词,重复调用ESC-,afterESC-.插入同一命令的前一个单词。所以,在你的下面的代码.zshrc,你可以得到一个命令的下一个到最后一个字Alt+ . Alt+ ,。
autoload -U copy-earlier-word
zle -N copy-earlier-word
bindkey '^[,' copy-earlier-word
Run Code Online (Sandbox Code Playgroud)
¹在这种情况下,“令牌”有几个合理的定义。在这个答案中,我将按照定义“insert-last-word被认为是一个单独的词的东西”。