Bash의 현재 명령에 기록의 전체 명령을 삽입하는 방법은 무엇입니까?
나는 몇 가지 연구를 수행하여 이전 명령의 첫 번째 단어와 마지막 단어를 삽입하는 두 개의 GNU Readline 키 바인딩을 식별했습니다. 불행하게도 나는 이러한 키 바인딩에 인수를 제공하는 방법(방법?)을 모르고 n
, 알고 있다고 하더라도 기록에서 긴 명령을 삽입하는 것은 불가능할 것입니다.
Ctrl-Alt-y
이전 명령에 첫 번째 인수를 삽입합니다. 인수 n을 사용하여 이전 명령의 n번째 단어를 삽입합니다.
Alt-.
Alt-_
이전 명령에 마지막 인수를 삽입합니다. 인수 n을 사용하여 이전 명령의 n번째 단어를 삽입합니다.
GNU Readline은 기록의 전체 명령을 현재 명령에 삽입하는 것을 지원합니까?
부인 성명: Bash 명령 대체를 찾고 있지 않습니다.
답변1
원하는 기록 확장(예: !foo
또는 !39
) 을 입력하고확장하다:
history-expand-line (M-^)
현재 줄에서 히스토리 확장을 수행합니다.
메타는 IIRC입니다 Alt.
답변2
바인딩을 직접 만들 수 있습니다. 어떤 키에 바인딩할지 결정하기만 하면 됩니다. 예Ctrl-T
insert_last_line(){
local l=$READLINE_LINE p=READLINE_POINT h=$(fc -nl -0)
READLINE_LINE=${l:0:p}${h#* }${l:p}
}
bind -x '"\C-T": insert_last_line'
반복할 때 이전 항목을 삽입하도록 만드는 것은 독자에게 연습 문제로 남아 있습니다 ;-)