嘿伙计们,我想弄清楚如何在不使用 !: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 个参数。