Обратите внимание, что это будет работать в терминале и в режиме emacs по умолчанию (который вы используете, если Ctrl+ Wудаляет предыдущее слово за вас). Он не будет работать в vi-режиме bash и не повлияет на сам vi / vim. Поэтому это только частичный ответ, но лучшее, что может предложить этот пользователь emacs.
Подобные вещи управляются readline
библиотекой, поведение которой можно контролировать с помощью ~/.inputrc
. Отредактируйте (или создайте, если он не существует) ~/.inputrc
и добавьте эту строку:
"\C-H":"\C-W"
Теперь откройте новый терминал, и он должен работать.
объяснение
Это \C-H
на самом деле Control+ BackSpace. Вы можете увидеть коды клавиш, нажав Ctrl+, Vзатем клавишу, которую вы ищете. Вы увидите, что BackSpaceвозвращается ^H
.
Теперь должно быть возможно связать Control+ BackSpaceс функцией bash, которая удаляет предыдущее слово ( backward-kill-word
или unix-word-rubout
) с помощью "\C-H": backward-kill-word
. Однако я не могу заставить это работать. Он отлично работает с разными ключами ( "\C-E": backward-kill-word
например, заставляет Ctrl+ Eудалить предыдущее слово), но по некоторым причинам я не могу заставить его работать BackSpace.
Таким образом, в качестве обходного пути мы просто отображаем Ctrl+ Backspaceна Ctrl+, Wкоторый уже сопоставлен backward-kill-word
. Итак, когда вы нажимаете Ctrl+ Backspace, это будет переведено в Ctrl+, Wчто, в свою очередь, отправит backward-kill-word
. Я понял идею этого обходного пути из этого поста SU .