
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чтобы выбрать альтернативные стили слов:
$ эхо ПриветДруг Alt+Z Стили слов (нажмите «Ввод» для получения более подробной информации): (b)ash (n)normal (s)hell (w)hitespace (d)efault (q)uit (B), (N), (S), (W) как указано выше с сопоставлением подслов
Затем заглавные буквы B
выберут (раздражающий меня, но, возможно, знакомый вам) bash
стиль выделения слов, но с обработкой подслов в стиле camelcase, который (в emacs
режиме) Ctrl+ W(или Alt+ Backspace) удалит Friend
указанное выше или Alt+ Bпереместит вас обратно в начало этого Friend
слова и т. д.