デフォルトでは、zsh
+CTRLとw+ALTはBackspaceまったく同じ効果を持つようです。
CTRL+をw同じにして英数字以外の文字で停止するようにALT+を変更するにはどうすればよいですか?Backspace
つまり、カーソルが次のコマンドの最後にあるときに+をecho /aaa/bbb/ccc
押すと終了し、+を押すと終了します。CTRLwecho
ALTBackspaceecho /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+BackSpaceとbackward-delete-word
停止する必要があります'
。
これは最初の例では機能しますが、2番目の例では機能しません。
$ echo 'asdf'
$ echo '
$ echo '=asdf'
$ echo '=
$
2番目の例では、echo '=
コマンドラインを超えています。 2番目のボタンを押すとAlt+BackSpaceすべてが完了しましたecho
。=
止まる予定だったので食べられると予想した'
。
期待どおりに機能しないのはなぜですか?
答え1
実際、これはzshバインディングにリストされていませんが、bindkey
表示されている場合あなた、定義した関数にバインドして構成できます。
私の答えに基づいて作業
zshからスラッシュや単語を削除する方法は?、私はこれを見つけた:
zsh:ディレクトリ区切り文字で単語を逆さまに殺すのをやめます。、これは以下を指す。
- 返信:逆さまに殺す、Will Yardleyを例に挙げてみましょう。
私はリストの誰か(Oliver Kidder)が提供したものを使用しています。 詳細については、10月8日月曜日のアーカイブを参照してください。 tcsh - 削除リバースワード(){ ローカルWORDCHARS="${WORDCHARS:s#/#}" zleは単語を逆さまに削除します。 } 私はそれをcontrol-Wに結び付けました。 バインディングキー '^W' tcsh-delete back-word しかし、明らかにあなたはそれを変更することができます。 私の考えでは、それはあなたが探していると思いますよね? '$WORDCHARS'変数はzshが単語の境界を決定する方法です。 グローバルに "/"を追加できますが、これは他に影響を与える可能性があります。 維持したいので、この機能を好みます。
これは以下を使用する
$WORDCHARS
例につながります。zshシェルワード分割の修正とウィキペディア
したがって、$WORDCHARS
それを独自の関数のローカル変数として使用し、必要に応じて単語を定義し、キーにバインドできます。
関数を定義するときは、次のように追加することを忘れないでください。キーマップ:
zle -N tcsh-backward-delete-word