Readline предлагает нам две разные функции для удаления слова, ни одна из которых не представляется настраиваемой, и ни одна из них не подходит. Могу ли я выполнить какое-нибудь вуду, которое бы сочетало в себе поведение и давало мне то, что я ожидаю?
**** Bind ctrl-W to backward-kill-word ****
% the "quick brown" fox
^
% the "quick brown" # 1x
^
% the "quick # 2x
^
% the " # 3x
^
% # 4x
^
Нет: не понимает, что строка в кавычках - это одно слово.
**** Bind ctrl-W to shell-backward-kill-word ****
% the "quick brown" fox
^
% the "quick brown" fox # 1x
^
% the "quick brown" # 2x
^
% the # 3x
^
% # 4x
^
Нет: ближе, но настойчивость в размещении курсора прямо над предыдущим словом и в удалении одного пробела в той же ситуации, когда обратное уничтожение слова корректно убивает все слово, делает это недопустимым для использования.
Вот то, что я мог бы подумать, будет поведение по умолчанию, но я не могу выявить его.
% the "quick brown" fox
^
% the "quick brown" # 1x ctrl-W
^
% the # 2x ctrl-W
^
% # 3x ctrl-W
^
Редактировать: я счастлив сказать, что я нашел свой путь к макросу, который выполняет это, по крайней мере, в этом простом случае. Время покажет, если оно выдержит.
Meta-w: shell-backward-kill-word
Meta-s: delete-horizontal-space
Control-w: "\M-s\M-w "