こんにちは、私は!: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番目のパラメータを取得できます。