![vi를 사용하여 bash 호출 시 마지막 매개변수를 설정하는 방법](https://linux55.com/image/55861/vi%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20bash%20%ED%98%B8%EC%B6%9C%20%EC%8B%9C%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
set -o vi
Bash에서 설정을 사용하고 있습니다 . 여기의 단축키 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