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'

私の現在は、その中にひっくり返されています。

$ 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番目のパラメータを取得できます。

関連情報