1

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 "

0