Изменение разделителей слов в bash - PullRequest
8 голосов
/ 31 августа 2009

Я хочу изменить разделители, используемые bash (или readline) для разделения слов. В частности, я хочу сделать '-' не разделять слова, чтобы, если у меня есть текст

ls some-file

и я нажимаю Alt-Backspace, он удаляет весь текст some-file, а не только символ '-'. Это также приведет к более быстрому и простому удалению длинных флагов, таких как --group-directories-first, для чего потребуется всего одно нажатие клавиши.

Я считаю, что именно так ведет себя zsh, и я бы хотел, чтобы bash вел себя так же.

Ответы [ 3 ]

7 голосов
/ 31 августа 2009

Ctrl-W делает именно то, что вы хотите.

3 голосов
/ 01 октября 2009

Следует иметь в виду, что отображение клавиш bash для ctrl-W не будет работать, если для ctrl-W назначена настройка stty werase. Если вы запустите "stty -a" и увидите "werase = ^ W", это будет иметь приоритет и будет использовать tty представление о том, что такое граница слова. Идея tty о границе слова обычно является пробелом, тогда как функция обратного уничтожения слова в bash также включает - и /.

Если вы хотите, чтобы Alt-Backspace делал то же самое, что и настройка werase, вы можете сделать это: связать "\ M- \ C-h": unix-word-rubout " связать '"\ M- \ C-?": unix-word-rubout'

Кроме того, если вы действительно хотите, чтобы ctrl-W делал то же, что и Alt-Backspace, вы должны сделать: stty werase undef #, если вы не сделаете этого, bash игнорирует команду follow bind bind '"\ C-w": слово "убить назад"

1 голос
/ 07 февраля 2010

Это может быть полезно: Ctrl-r инициирует поиск в обратном направлении (для истории и текущей строки), так что вы можете просто нажать пробел и выйти и вернуться туда, где вы хотите, или снова ctrl-r (после первого пробела), если вы хотите вернуться еще один аргумент.Затем вы можете при желании убить оставшуюся часть линии.

Особенно полезно, если вы имеете дело с аргументами длинного пути (например, в cp или diff) и вам нужно изменить конец первого аргумента.

Попытка получить \ Mb для этого, но останавливается на слешах.

...