Zsh - バックスペース端末ビープ音を有効にする方法

Zsh - バックスペース端末ビープ音を有効にする方法

kali linux端末(zsh)でビープ音をどのように有効にするかについてのアドバイスを求めます。サブシェルにあるときにビープ音が機能することに注意してください(例:mysql CLIにアクセスしたがバックスペースが正しく機能する)。

答え1

zshモードとemacsモードでは、これはデフォルトのbackward-delete-charバインディングウィジェットです。Backspace

ウィジェットを使用して、特定のキーバインディングの内容を理解できますdescribe-key-briefly。デフォルトでは、ウィジェットはどのキーにもバインドされていませんが、Alt+を使用してemacsモード(emacsのように)でzleウィジェットを実行し、xその中にウィジェットを入力できます(タブを完成可能)。

したがって、Alt+ xdescがTabEnterBackspace表示されます。

"^?" is backward-delete-char

^?ほとんどの端末エミュレータから送信されたDEL文字の表現Backspace

または、以下を実行できます。

$ bindkey '^?'
"^?" backward-delete-char

ウィジェットは、++を入力したときbackward-delete-charなど、負の引数が指定された場合にのみビープ音を鳴らし、この場合は5文字を削除します。Alt-Alt5Backspace今後(emacsのように)後ろに移動するのではなく、削除する文字がたくさんない場合はビープ音が鳴り、すべての文字が削除されます(そしてemacsの動作から離れているカーソルを最後に移動します)。

行の先頭から呼び出されるか削除する文字数よりも大きい数値引数を使用して、呼び出し時にビープ音を鳴らすには、次のようにオーバーライドできます。

backward-delete-char() {
  local enough_chars=$(( CURSOR >= ${NUMERIC:-1} ))
  zle .$WIDGET && (( enough_chars ))
}
zle -N backward-delete-char

デフォルトでは、完了に失敗するとビープ音が鳴ります。そうでなければ、あなたまたはそれらがソースにしたファイルにsetopt nobeep// unsetopt beep...があるかもしれません。を使用してオプションのステータスを確認できます。オプションの場所が見つからない場合は、いつでも最後に追加して復元できます。set +o beep~/.zshrc/etc/zsh/zshrcecho $options[beep]set +o beepset -o beep~/.zshrc

関連情報