假设我已经执行了一个命令
foo a b c d e f
然后我可以用来$!
访问该命令的最后一个参数,即如果我输入
echo !$
它变成了echo f
。同样我可以使用
echo !:4
访问第 4 个元素,d
但这意味着我必须从左边数。有没有从右边访问第 n 个元素的符号?
假设我已经执行了一个命令
foo a b c d e f
然后我可以用来$!
访问该命令的最后一个参数,即如果我输入
echo !$
它变成了echo f
。同样我可以使用
echo !:4
访问第 4 个元素,d
但这意味着我必须从左边数。有没有从右边访问第 n 个元素的符号?
您可以使用小部件
copy-prev-word
,绑定到ESC-.
(默认情况下在 vi 模式下未绑定 — 默认 vi 绑定缺少 vi 中不存在的大多数便利功能)。默认情况下,它会插入前一个命令的最后一个单词。使用正前缀参数 N,它会插入从末尾开始的第 N 个单词(1 为最后一个单词)。使用零或负参数,它会从头开始计数单词。因此之后
echo a b c d e f
,按ESC 2 ESC .
(即M-2 M-.
通常可以输入为++ Alt)插入。2 Alt.e
您可能更喜欢绑定
copy-prev-shell-word
到键。区别在于copy-prev-word
将单词视为纯空格分隔,而copy-prev-shell-word
将考虑 shell 引用。重复
copy-prev-word
会用上一个命令中相同位置的单词替换刚刚插入的单词。还有一个小部件copy-earlier-word
(默认情况下不绑定到键),其工作方式略有不同:重复copy-earlier-word
会用同一命令中的上一个单词替换刚刚插入的单词。