「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