Привязка backward-kill-word к Ctrl+w

Я пытаюсь переключиться от длительного использования Tcsh к недавнему исследованию Bash.

Мне удалось портировать по всем моим любимым функциям, за исключением Ctrl+w, который рассматривает пробелы и наклонные черты как границы слова, наиболее вероятный backward-kill-word. В Bash однако readline удаляет полностью к первому пространству, удаляя все наклонные черты между.

Я попробовал много различных комбинаций \C-w: backward-kill-word и в .inputrc и в использовании .bashrc связывают, но я не могу заставить это прокладывать себе путь, я хочу.

Достаточно забавный, через Шпаклевку из Windows на работе я могу использовать Alt+Backspace, который также говорит руководство, привязка по умолчанию, для создания точного поведения, которое я хочу. Но в Terminal.app на моих Mac дома это не работает. То же идет для любого сервера FreeBSD или Linux, в меня, оказывается, входят от Terminal.app.

Таким образом, я обращаюсь к суперпользователю для справки.

23
задан 18.11.2010, 22:12

1 ответ

readline не обязывает Ctrl-W, так как он обрабатывается терминальным драйвером по умолчанию:

$ stty -a
(...) werase = ^W; (...)

Для отключения этого необходимо работать (в ~/.bashrc):

stty werase undef
bind '"\C-w": backward-kill-word'

.inputrc не поможет здесь, так как это читается, когда Ctrl-W все еще присваивают werase.

Также отметьте это \C-w формат keyseqs должен быть включен в двойные кавычки, как выше.


Различные терминалы могут обработать Alt-Backspace по-другому.

  • PuTTY и Терминал GNOME (с настройками по умолчанию) отправляют 1b 7f (ESC DEL)
  • Xterm с metaSendsEscape: true отправляет 1b 08 (ESC BS).
  • Xterm без metaSendsEscape отправляет 88 (HTS, или BS с самым высоким набором битов).

Xterm имеет несколько настроек для управления поведением клавиши Alt (названный Meta в Xterm и X11 в целом). С metaSendsEscape, содержание Высокого звука снабдит префиксом нажатие клавиши ESC (шестнадцатеричное число 1b). Без установки (режим по умолчанию) Высокий звук установит самый высокий бит вводимого символа, приводящего к специальным символам. (Например, Alt-N приводит к ESC n и î соответственно.)

Насколько я могу помнить, Terminal.app также имеет подобную установку для управления поведением Meta/Alt/whatever-Macs-use.

40
ответ дан 07.12.2019, 09:48

Теги

Похожие вопросы