Readline nos oferece duas funções diferentes para excluir uma palavra, nenhuma delas parece ser configurável e nem a coisa certa. Existe algum voodoo que eu possa realizar, que combine os comportamentos e me dê o que eu espero?
**** Bind ctrl-W to backward-kill-word ****
% the "quick brown" fox
^
% the "quick brown" # 1x
^
% the "quick # 2x
^
% the " # 3x
^
% # 4x
^
Não: não entende que uma string entre aspas é uma única palavra.
**** Bind ctrl-W to shell-backward-kill-word ****
% the "quick brown" fox
^
% the "quick brown" fox # 1x
^
% the "quick brown" # 2x
^
% the # 3x
^
% # 4x
^
Não: mais perto, mas a insistência em posicionar o cursor bem em cima da palavra anterior, e em deletar um único espaço na mesma situação em que a palavra que mata para trás corretamente mata a palavra inteira, torna isso intolerável.
Aqui está o que eu poderia ter pensado que seria o comportamento padrão, mas eu não posso evocá-lo.
% the "quick brown" fox
^
% the "quick brown" # 1x ctrl-W
^
% the # 2x ctrl-W
^
% # 3x ctrl-W
^
Edit: Estou feliz em dizer que encontrei meu caminho para uma macro que realiza isso, pelo menos neste caso simples. O tempo dirá se isso acontece.
Meta-w: shell-backward-kill-word
Meta-s: delete-horizontal-space
Control-w: "\M-s\M-w "