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번째 매개변수를 가져올 수 있습니다.

관련 정보