我知道Esc+.给了你最后一个命令的最后一个参数。
Esc
.
但我对最后一个命令的第一个参数感兴趣。是否有键绑定可以这样做?
在同一行中,是否有从最后一个命令获取第 n 个参数的通用方法?我知道在 bash 脚本中,您可以使用$0等$1,但这些在命令行上不起作用。
$0
$1
此外,如何遍历先前命令的第 0 个参数,就像我们可以通过连续按Esc+来处理最后一个参数一样.?
正如M-.(meta-dot or esc-dot or alt-dot) 是 readline 函数一样yank-last- arg,M-C-y(meta-control-y or esc-ctrl-y or ctrl-alt-y) 是 readline 函数yank- nth-arg。如果不指定n,它会拉出上一个命令的第一个参数。
M-.
yank-last- arg
M-C-y
yank- nth-arg
n
要指定参数,请按 Escape 和数字或按住 Alt 并按数字。您可以这样做Alt--开始指定一个负数,然后释放 Alt 并按下数字(这将从参数列表的末尾开始计算。
Alt
-
例子:
输入以下命令
$ echo a b c d e f g a b c d e f g
现在在下一个提示符下,输入echo(后面有空格),然后
echo
按Alt- Ctrl-y你现在会看到:
Ctrl
y
$ echo a
无需按下Enter,请执行以下操作
Enter
按Alt- 3 Alt- Ctrl-y
3
按Alt- - 2 Alt- Ctrl-y
2
现在你会看到:
$ echo ace
顺便说一句,您可以echo通过选择参数 0 将其放在线上:
按Alt- 0 Alt- Ctrl-y
0
编辑:
要回答您添加到原件中的问题:
您可以按Alt-0然后反复按Alt-.逐步执行之前的命令 (arg 0)。同样Alt--然后重复Alt-.将允许您逐步完成之前的倒数第二个参数。
如果历史上的某一行没有合适的论据,就会敲响警钟。
如果您经常使用某个特定的组合,您可以定义一个宏,这样一键即可执行它。此示例将通过按Alt- Shift-从先前命令中调用第二个参数Y。您可以选择任何您喜欢的可用按键来代替这个按键。您可以反复按它以逐步浏览以前的内容。
Shift
Y
要试用它,请在 Bash 提示符下输入宏:
bind '"\eY": "\e2\e."'
要使其持久化,请将此行添加到您的~/.inputrc文件中:
~/.inputrc
"\eY": "\e2\e."
不幸的是,这似乎不适用于 arg 0 或负参数数。