修正する

修正する

デフォルトでは、zsh+CTRLw+ALTBackspaceまったく同じ効果を持つようです。

CTRL+をw同じにして英数字以外の文字で停止するようにALT+を変更するにはどうすればよいですか?Backspace

つまり、カーソルが次のコマンドの最後にあるときに+をecho /aaa/bbb/ccc押すと終了し、+を押すと終了します。CTRLwechoALTBackspaceecho /aaa/bbb/

修正する

答えに基づいて@Thomas Dickey以下を追加しました.zshrc

 my-backward-delete-word () {
    local WORDCHARS='~!#$%^&*(){}[]<>?+;'
    zle backward-delete-word
 }
 zle -N my-backward-delete-word

 bindkey    '\e^?' my-backward-delete-word

これで、コマンドラインエディタが期待どおりに動作します。

たとえば、一重引用符文字'はmyに列挙されていないので、をWORDCHARS押すAlt+BackSpacebackward-delete-word停止する必要があります'

これは最初の例では機能しますが、2番目の例では機能しません。

$ echo 'asdf'
$ echo '

$ echo '=asdf'
$ echo '=
$

2番目の例では、echo '=コマンドラインを超えています。 2番目のボタンを押すとAlt+BackSpaceすべてが完了しましたecho=止まる予定だったので食べられると予想した'

期待どおりに機能しないのはなぜですか?

答え1

実際、これはzshバインディングにリストされていませんが、bindkey表示されている場合あなた、定義した関数にバインドして構成できます。

私の答えに基づいて作業

    私はリストの誰か(Oliver Kidder)が提供したものを使用しています。
    詳細については、10月8日月曜日のアーカイブを参照してください。

    tcsh - 削除リバースワード(){
      ローカルWORDCHARS="${WORDCHARS:s#/#}"
      zleは単語を逆さまに削除します。
    }

    私はそれをcontrol-Wに結び付けました。
    バインディングキー '^W' tcsh-delete back-word

    しかし、明らかにあなたはそれを変更することができます。

    私の考えでは、それはあなたが探していると思いますよね?

    '$WORDCHARS'変数はzshが単語の境界を決定する方法です。
    グローバルに "/"を追加できますが、これは他に影響を与える可能性があります。
    維持したいので、この機能を好みます。

したがって、$WORDCHARSそれを独自の関数のローカル変数として使用し、必要に応じて単語を定義し、キーにバインドできます。

関数を定義するときは、次のように追加することを忘れないでください。キーマップ:

zle -N tcsh-backward-delete-word

関連情報