ZshバインディングキーはCtrl + cをCtrl + pにマップします。

ZshバインディングキーはCtrl + cをCtrl + pにマップします。

「ls」などのコマンドを実行するためにCTRL + Lをマッピングする方法を知っています。

bindkey -s "^L" 'ls^M'

しかし、私のZSHでCTRL + cを他のキーストローク(例えばCTRL + p)にどのようにマッピングしますか?

それとも、現在実行中のプロセスを終了するコマンドは何ですか?

ベストアンサー1

^C~である邪魔するデフォルトでは、システムターミナルドライバには文字があり、押す文字はコマンドを中断したり、長期実行などを完了したりできます。シェルは関係ありません。

独自の行エディタでzshのバインディングを機能させるには、それを他のものにバインドする必要があります。そうしないと、zleシステムはSIGINT信号を生成するために文字を傍受するため、+を押すと文字が表示されることがわかりません。^CCtrlc

stty intr '^G'
bindkey -s '^C' whatever

または:

bindkey '^C' up-line-or-history

^Pモードでデフォルトのバインディングと同じウィジェットをバインドします。emacs

実行時にのみ役割を果たすには、^G次のようにします。intrzle

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

おすすめ記事