vi를 사용하여 bash 호출 시 마지막 매개변수를 설정하는 방법

vi를 사용하여 bash 호출 시 마지막 매개변수를 설정하는 방법

set -o viBash에서 설정을 사용하고 있습니다 . 여기의 단축키 Alt+.(이전 명령의 마지막 인수를 기억하세요)는 emacs 모드에서 작동하지 않습니다. 그러면 vi에 해당하는 것은 무엇입니까?

답변1

마지막 명령의 마지막 인수를 가져오는 방법에는 여러 가지가 있습니다.

1. inputrc: 마지막 매개변수 삽입 및 마지막 매개변수 추출

다음 코드를 ~/.inputrc파일 에 복사하세요.

set editing-mode vi
# Insert Mode
set keymap vi-insert
"\e.":yank-last-arg
"\e_": yank-last-arg

당신은 그것을 사용할 수 있습니다내 inputrc 파일. 이것은 inputrc 매뉴얼입니다insert-last-argument그리고yank-last-arg

2. 단어 표시: !!:$ 및 !$

예를 들어:

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !$
echo arg5
arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !!:$
echo arg5
arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !!:^
echo arg1
arg1

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !!:2-4
echo arg2 arg3 arg4
arg2 arg3 arg4

수동쉘 단어 표시기보여주다:

! ! :$

designates the last argument of the preceding command. This may be shortened to !$.

0(영)

The 0th word. For many applications, this is the command word.

N

The nth word.

^

The first argument; that is, word 1.

$

The last argument.

%

The word matched by the most recent ‘?string?’ search.

XY

A range of words; ‘-y’ abbreviates ‘0-y’.

*

단어 0을 제외한 모든 단어입니다. 이는 "1-$"의 동의어입니다. '를 사용하는 것은 오류가 아닙니다.' 이벤트에 단어가 하나만 있으면 빈 문자열이 반환됩니다. 엑스

Abbreviates ‘x-$’

엑스-

Abbreviates ‘x-$’ like ‘x*’, but omits the last word.

3. 쉘 특수 매개변수: $_

예를 들어:

┌─ (marslo@MarsloJiao ~) ->
└─ # echo very-very-very-very-very-long-argument
very-very-very-very-very-long-argument

┌─ (marslo@MarsloJiao ~) ->
└─ # echo $_
very-very-very-very-very-long-argument

┌─ (marslo@MarsloJiao ~) ->
└─ # ls /usr/local/etc/

┌─ (marslo@MarsloJiao ~) ->
└─ # cd $_

┌─ (marslo@MarsloJiao /usr/local/etc) ->
└─ #

설명서에쉘 특수 매개변수:

_

(밑줄.) 쉘이 시작되면 환경 또는 인수 목록에 전달된 쉘을 호출하는 데 사용되는 절대 경로 이름이나 실행 중인 쉘 스크립트로 설정하십시오. 그런 다음 확장 후 이전 명령의 마지막 인수로 확장됩니다. 또한 실행된 각 명령을 호출하고 해당 명령으로 내보낸 환경에 배치하는 데 사용되는 전체 경로 이름으로 설정됩니다. 메일을 확인할 때 이 매개변수는 메일 파일의 이름을 보유합니다.

답변2

다음 줄을 뒤에 추가하세요 set -o vi.

bind -m vi-command ".":yank-last-argument # or insert-last-argument

그런 다음 emacs 모드에서처럼 Alt+를 사용할 수 있습니다..

또는 다음 두 가지 모두에서 작동하는 기록 확장을 사용하세요.

!$:p

관련 정보