Palavra de eliminação reversa com reconhecimento de CamelCase em readline

Palavra de eliminação reversa com reconhecimento de CamelCase em readline

backward-kill-wordé uma ação readline que exclui a palavra alfanumérica anterior. Por exemplo, aplicando esta ação no seguinte cenário ( indica a posição do cursor)

echo hello-friend▯

resulta em

echo hello-▯

backward-kill-wordnormalmente está vinculado a <Alt-Backspace>, embora isso possa ser personalizado no arquivo de configuração do readline ~/.inputrc.

Minha pergunta é: é possível personalizar backward-kill-wordpara excluir até o primeiro caractere não alfanumérico ou a primeira letra maiúscula? Dessa forma, poderia ser usado para excluir palavras do CamelCase. Por exemplo, se eu começar com

echo HelloFriend▯

ao pressionar <Alt-Backspace>eu gostaria de obter

echo Hello▯

Responder1

Se mudar para zshfor uma opção, você pode usarselect-word-stylewidget contribuído pelo usuárioque permite selecionar o estilo da palavra para todos os movimentos e operações da palavra.

Adicionar à ~/.zshrc:

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

E pressione Alt+ Zpara selecionar estilos de palavras alternativos:

$ echo Olá amigo Alt+Z
Estilos de palavras (pressione Enter para obter mais detalhes):
(b)ash (n)normal (s)inferno (w)hitespace (d)efault (q)uit
(B), (N), (S), (W) como acima com correspondência de subpalavras

Em seguida, letras maiúsculas Bselecionariam um bashestilo (irritante para mim, mas talvez familiar para você) de seleção de palavras, mas com tratamento de subpalavras em caixa de camelo, alter qual (no emacsmodo) Ctrl+ W(ou Alt+ Backspace) removeria o Friendacima ou Alt+ Bvoltaria ao início dessa Friendpalavra, etc.

informação relacionada