是否可以为 !:0 创建别名,或者有其他选择吗?

是否可以为 !:0 创建别名,或者有其他选择吗?

说实话,我觉得这个快捷键!:0还不够短,考虑到它还需要shift键。

我想知道是否可以为它创建一个别名或函数,我知道我错过了一些东西。我做了显而易见的事情:

pr() {
    !:0
}

和:

alias pr="!:0"

或者,是否Alt + .存在类似的东西,但仅用于命令部分($0)?我什么也没找到。

答案1

您可以使用以下方法执行此操作fc

alias pr='fc -e "sed -i s/\ .*//"'

这要求fc使用输入的最后一个命令启动编辑器,等待编辑器退出,然后运行(可能修改的)命令。别名不使用常规编辑器,sed而是仅保留命令的第一个单词。

答案2

首先,请注意,这!:0不是历史记录最后一行中的命令。这是第一个词。所以如果你跑A=B some-command arg1!:0就会A=B

也就是说,既然你提到了Alt.,那就是:

yank-last-arg (M-. or M-_)

将最后一个参数插入到上一个命令中(上一个历史记录条目的最后一个单词)。对于数字参数,其行为与yank-nth-arg.[...]完全相同

还有前面提到的yank-nth-arg:

将第一个参数插入到上一个命令(通常是上一行的第二个单词)的 point 处。有争论n,插入 n上一个命令中的第一个字(上一个命令中的字以字 0 开头)。

所以你可以这样做 Alt0 AltCtrly,或者,因为与参数的yank-last-arg行为“完全一样”, 。yank-nth-argAlt0 Alt.

您可以为此进行绑定,但这有点迂回 -显然readline 没有在指定参数时绑定到命令的机制。你必须绑定到按键序列它首先模仿参数的序列,然后模仿现有绑定的序列,所以你可以这样做:

bind '"\e,": "\e0\e."'

然后Alt,按 获取第一个单词。

相关内容