"ls"와 같은 명령을 실행하기 위해 CTRL+L을 매핑하는 방법을 알고 있습니다.
bindkey -s "^L" 'ls^M'
하지만 내 ZSH에서 CTRL+c를 다른 키 입력(예: CTRL+p)에 어떻게 매핑합니까?
아니면 현재 실행 중인 프로세스를 종료하는 명령은 무엇입니까?
답변1
^C
~이다방해하다기본적으로 시스템 터미널 드라이버에는 문자가 있으며, 누르는 문자는 명령을 중단하거나 장기 실행 등을 완료할 수 있습니다. 쉘은 관련되지 않습니다.
자체 라인 편집기에서 zsh의 바인딩이 작동하도록 하려면 이를 다른 것에 바인딩해야 합니다. 그렇지 않으면 zle
시스템이 SIGINT 신호를 생성하기 위해 문자를 가로채기 때문에 +를 누를 때 문자가 나타나는 것을 볼 수 없습니다 .^C
Ctrlc
stty intr '^G'
bindkey -s '^C' whatever
또는:
bindkey '^C' up-line-or-history
^P
모드에서 기본 바인딩과 동일한 위젯을 바인딩합니다 .emacs
런타임에만 역할이 되려면 ^G
다음을 수행하면 됩니다.intr
zle
autoload add-zle-hook-widget
intr-is-cC() stty intr '^C' < /dev/tty
intr-is-cG() stty intr '^G' < /dev/tty
zle -N intr-is-cC
zle -N intr-is-cG
add-zle-hook-widget line-init intr-is-cG
add-zle-hook-widget line-finish intr-is-cC
bindkey -s '^C' whatever
이는 zle이 시작될 때(프롬프트를 실행한 후) 및 종료할 때(프롬프트를 떠날 때) intr
로 설정됩니다 .^G
^C