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