Bindkey를 사용하여 ZSH에서 스크립트를 실행하는 방법은 무엇입니까?

Bindkey를 사용하여 ZSH에서 스크립트를 실행하는 방법은 무엇입니까?

ZSH의 bindkey스크립트에 키 시퀀스를 어떻게 바인딩 합니까?

답변1

위젯이 필요하지 않다고 생각합니다.

bindkey -s '\eb' '/path/to/script.sh\n' 

~에서zsh 문서:

ZLE 명령과 마찬가지로 "bindkey -s"를 사용하여 키 시퀀스를 다른 문자열에 바인딩할 수 있습니다.

답변2

스크립트를 호출하는 위젯을 정의할 수 있습니다.

my-script_widget() my-script its args
zle -N my-script_widget
bindkey '\ej' my-script_widget

그런데 왜 zle에서 직접 스크립트를 호출합니까?

아무 것도 표시되면 디스플레이가 엉망이 됩니다. 출력이 다른 위젯 메시지로 표시되도록 하려면 다음을 수행할 수 있습니다.

my-script_widget() zle -M "$(my-script its args)"

또는 출력을 커서에 삽입하려면 다음을 수행하십시오.

my-script_widget() LBUFFER+=$(my-script its args)

답변3

확장하세요@수사이드답변:

키 시퀀스만 전송 되므로 bindkey -s프롬프트에 이미 뭔가가 있고 바인딩을 사용하려고 하면 프롬프트에 이미 뭔가가 있는 후에만 입력합니다. 이 문제는 kill-whole-line명령/스크립트를 입력하기 전에 정리 프롬프트를 보내면 해결될 수 있습니다.

kill-whole-line일반적으로 ^u( Ctrl+U)에 바인딩됩니다. 참조문서. 그렇지 않은 경우 다음을 통해 바인딩할 수 있습니다.

bindkey '^u' kill-whole-line

그런 다음 다음을 수행할 수 있습니다.

bindkey -s '\eb' '^u/path/to/script.sh^M'

입력 문자 (개행 문자) Alt+b가 전송되기 전에 현재 행을 종료하도록 바인딩합니다 .^M

관련 정보