Когда в оболочке (bash) - я хочу, чтобы Ctrl-Backspace связывался для "удаления слова назад". Является ли это возможным?
Редактировать:
Я использую konsole
- терминал в KDE.
Когда в оболочке (bash) - я хочу, чтобы Ctrl-Backspace связывался для "удаления слова назад". Является ли это возможным?
Редактировать:
Я использую konsole
- терминал в KDE.
Я нашел эту тему через Google, но ответ был не то, что я хотел услышать. Итак, я поиграл:
На моем терминале нормальный backspace отправляет ^H
, а ctrl+backspace отправляет ^?
,
Так что это просто случай повторного связывания ^?
удалить слово, которое по умолчанию доступно через Ctrl+W.
$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
Итак, поэтому это должно работать:
$ bind '"\C-?":unix-word-rubout'
Однако это не ... кто-нибудь может объяснить?
$ bind '"\C-?":"^W"'
Где ^W
- это буквальное / необработанное ^W
(нажмите Ctrl +V, затем Ctrl +W, чтобы он появился).
Почему бы просто не использовать Alt+Backspace или Ctrl+W , которые уже отображаются в большинстве терминалов. Не уверен насчет консоли. Xmodmap (man xmodmap) может также использоваться для переназначения других пользовательских ключей. (Как ни парадоксально, xmodmap не может переназначить Backspace очень хорошо, потому что терминал переопределяет сопоставления, но он хорошо работает с большинством ключей ...).
Просто отредактируйте ваш ~/.inputrc
(вам может понадобиться создать его или скопировать туда в /etc/inputrc
), чтобы он содержал:
# Ctrl-Delete: delete next word
"\e[3;5~": shell-kill-word
# Ctrl-Backspace
"\C-H": shell-backward-kill-word
Это также отобразит Ctrl+Delete, чтобы удалить слово рядом с курсором.
Здесь есть несколько хороших ответов, но я решил это в Konsole с помощью Настройки-> Редактировать текущий профиль-> Клавиатура-> Изменить, а затем добавил отображение из Backspace+Control
в \x17
. (Я нашел код ASCII для Ctrl-w, используя showkey --ascii
.)
Это зависит от того, что видит Баш. При обычном взаимодействии с терминалом bash не видит, какие клавишные модификаторы вы нажали, только получившийся символ. Backspace уже такой же, как control-H, например. Удерживать нажатой клавишу Shift или контроль не имеет значения.
ОДНАКО ваше терминальное приложение (xterm? CMD? Терминал? Шпатлевка? Зависит от вашей ОС) может видеть ваши нажатия клавиш и может иметь способ сопоставить комбинацию клавиш control-backspace с чем-то, что bash может отличить, кроме backspace.
Попробуй это:
bind '"\C-_":backward-kill-word'
При желании добавьте следующее в ~/.inputrc, чтобы сделать его постоянным:
"\C-_": backward-kill-word
Работает на bash 4.3.11 в Kubuntu 14.04
На большинстве терминалов CTRL+W уже должен удалить слово назад. Это работает с xterm, и я думаю, что это работает с konsole. CTRL+W - это стандартная привязка клавиш в текстовой программе, которая будет работать с vim в режиме вставки, emacs и каждой оболочке.
В консоли:
Settings -> Edit current profile
[Edit...]
[Add]
и в столбце « Key Combination
введите Backspace+Ctrl
. В столбце Output
введите 0x08
(который обычно является символом возврата )Теперь вы должны иметь возможность сопоставить этот ключ с backward-kill-word
через
# ~/.bashrc
bind '"\x08":backward-kill-word'