Можно ли настроить bash таким образом, чтобы Ctrl-W правильно удалял слова?

276
psp

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 " 
1
Я думаю, что «правильный» может быть в глазах смотрящего. Макрос, который вы выяснили, выглядит интересно, я думаю, вы должны сделать его ответом. janos 7 лет назад 0

0 ответов на вопрос