キャメルケースに対応した readline での後方削除単語

キャメルケースに対応した readline での後方削除単語

backward-kill-wordは、前の英数字の単語を削除するreadlineアクションです。たとえば、次のシナリオでこのアクションを適用すると(カーソルの位置を示します)

echo hello-friend▯

結果的に

echo hello-▯

backward-kill-wordは通常 にバインドされます<Alt-Backspace>が、readline の設定ファイル でカスタマイズできます~/.inputrc

私の質問は、最初の非英数字文字、または最初の大文字まで削除するようにカスタマイズすることは可能ですかbackward-kill-word?この方法では、CamelCaseの単語を削除するために使用できます。たとえば、次のように始めるとします。

echo HelloFriend▯

押すと<Alt-Backspace>取得したい

echo Hello▯

答え1

切り替えがzsh可能な場合は、select-word-styleユーザーが投稿したウィジェットこれにより、すべての単語の動きと操作の単語スタイルを選択できます。

に追加~/.zshrc

autoload -U select-word-style
zle -N select-word-style
bindkey '\ez' select-word-style
select-word-style default

Alt+ を押すとZ、別の単語スタイルを選択できます。

$ エコー HelloFriend Alt+Z
Word のスタイル (詳細についてはリターンキーを押してください):
(b)ash (n)ormal (s)hell (w)hitespace (d)efault (q)uit
(B)、(N)、(S)、(W)は上記と同様、サブワードマッチングあり

次に、大文字はB(私にとっては煩わしいですが、皆さんにはおなじみの)bash単語選択スタイルを選択しますが、キャメルケースのサブワード処理 alter が適用され、(emacsモードでは)Ctrl+ W(またはAlt+ Backspace)で上記が削除されFriendAlt+ でその単語Bの先頭に戻る、などとなります。Friend

関連情報