Ответ 1
Ctrl - w привязан в stty
к werase
. Сначала вам нужно отпереть его.
stty werase undef
bind '"\C-w":kill-region'
Я хотел бы нанести Ctrl - w на kill-region
в Bash 4.2. По умолчанию этот ключ привязан к unix-word-rubout
(удалять слово назад). Согласно руководству, переназначение должно быть возможным с помощью команды bind
, которая имеет параметры
-u функция Отвяжите все ключи, привязанные к названной функции.
-r keyseq Удалите все текущие привязки для keyseq.
Я пробовал bind -r "\C-w"
и bind -u unix-word-rubout
, но ключ не был отменен, и, как показывает bind -P | grep unix-word-rubout
, в отображении изменений не было.
Я немного играл с bind
, и я могу развязать другие встроенные клавиши, но не Ctrl - w.
Ctrl - w привязан в stty
к werase
. Сначала вам нужно отпереть его.
stty werase undef
bind '"\C-w":kill-region'
По умолчанию readline пытается связать управляющие символы, обработанные специально драйвером терминала ядра, с их эквивалентами readline. (Чтобы узнать, как настроен ваш терминал, запустите
stty -a
.) У вашего терминала предположительно есть Ctrl-w
, установленный на werase
, поэтому bash привязывает его к unix-word-rubout
. Это связывание имеет приоритет над любыми ключевыми словами, указанными в ~/.inputrc
.
Чтобы избежать этого сопоставления, вам нужно установить переменную readline bind-tty-special-chars
в off
в файле ~/.inputrc
:
set bind-tty-special-chars off