Bash의 vi 모드(set -o vi)를 사용할 때 마지막으로 실행한 명령의 마지막 매개변수를 복원할 수 있습니까? 이것은 emacs 모드에서 +를 사용하여 ESC수행 되었으며 .vi 모드에서도 수행하고 싶습니다.
나는 bash가 !$
and 를 제공한다는 것을 알고 있지만 $_
확장되지 않았으며 직접 사용하는 것은 매우 위험하다고 생각합니다.
편집 및 추가와 관련하여 Stack Overflow에서 찾은 몇 가지 .inputrc
솔루션을 시도했지만 성공하지 못했습니다.
set editing-mode vi
set keymap vi-insert
"\e.": yank-last-arg
"\e_": yank-last-arg
Bash에서 vi 모드로 전환 중인데 ESC+가 꽤 익숙해서 .사용하거나 빠르고 쉬운 대안을 찾아보면 좋을 것 같습니다.
편집: 이 질문은 Alt+S를 사용하여 마지막 매개변수를 복원하는 방법을 묻는 유사한 질문과 중복된 것으로 표시되었습니다. 특히 ESC+에 대해 묻고 있습니다. (이것은 내가 익숙하고 다른 답변에서는 다루지 않는 지름길입니다.)
편집: @chaos의 솔루션을 보완하기 위해 다음 바인딩을 사용하면 ESC+를 사용할 수 있습니다. (음, "."입니다.) 마지막 인수를 붙여넣으면 Vi의 점(.) 기능을 잃게 됩니다:
bind -m vi-command ".":insert-last-argument
답변1
나는 _
이것을 하기 위해 (일반 모드에서) 사용하고 있습니다. 여기에 문서화되어 있는 것을 발견했습니다.http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.txt.
또한 기억하기 쉽습니다:
$_
마지막 매개변수로 확장<Esc> + _
입력하세요
답변2
저에게는 다음을 추가했을 때 .inputrc
:
$if mode=vi
"\e.":yank-last-arg
$endif
.inputrc
그런 다음 bash에서 동적으로 변경할 때 다시 읽어야 합니다 .
set -o vi
bind -f .inputrc
alt이제 + 를 사용하여 마지막 매개변수를 얻을 수 있습니다 ..