안녕하세요 여러분, 저는 !: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번째 매개변수를 가져올 수 있습니다.