如何在 Bash 上使用 vi 模式启用 yank-nth-arg?

如何在 Bash 上使用 vi 模式启用 yank-nth-arg?

嘿伙计们,我想弄清楚如何在不使用 !:nth 的情况下从上一个命令中获取第 n 个参数。在普通的 bash(emacs 模式)中,我可以使用以下快捷方式来做到这一点:

<ESC>nth_arg <ESC><c-y>

如何使用 bash vi 模式 (bash -o vi) 执行相同操作?

我的相关 .bashrc 行

set -o vi
#BASH yank-nth-arg: <esc>narg <c-a>y
#BASH yank-last-arg: <a-.>
bind -m vi-insert '"\e.": yank-last-arg'

我的电流与其中的 yank 绑定:

$ bind -lp | grep 'yank'
vi-yank-arg
vi-yank-to
yank
yank-last-arg
yank-nth-arg
yank-pop
# vi-yank-arg (not bound)
# vi-yank-to (not bound)
"\C-y": yank
"\e.": yank-last-arg
# yank-nth-arg (not bound)
# yank-pop (not bound)

目前当我尝试执行以下操作时:

<ESC>1 <ESC><c-y> or <ESC>1 <ALT-c-y>

我得到一个空格/制表符,或者 (arg: 1) 提示消失后什么也没有发生。

BR

答案1

您还可以使用以下绑定键:

bind -m vi-insert '".": yank-last-arg'

或者:

bind -m vi-insert ".":insert-last-argument

要获取第 n 个参数:

bind -m vi-command '"\e-": yank-nth-arg'

现在您可以使用<ALT>n <ALT>-从上一个命令获取第 n 个参数。

相关内容