6

В readline(3) я должен иметь возможность сопоставить Control-Backspace с той же функцией, что и Control-W (unix-kill-rubout). Независимо от того, что я положил в ~/.inputrc я не могу это распознать.

\C-\b: unix-kill-rubout

... например не работает. Могу ли я отобразить Control-Backspace на unix-kill-rubout в readline?

7 ответов7

4

Добавление

"\C-_": unix-word-rubout

в .inputrc кажется, работает для меня.

C-_ представляет контрольное подчеркивание. Это то, что мой терминал отправляет при нажатии Ctrl+Backspace.

Нажав Ctrl+V, комбинация клавиш отобразит свой код на консоли. Для меня, нажав Ctrl+V, затем Ctrl+Backspace повторяет ^_ где ^ означает Ctrl. В .inputrc \C- это модификатор Ctrl, поэтому \C-_ - то, что здесь нужно. Вы можете использовать эту технику для определения других комбинаций клавиш, которые вы можете использовать.

3

Как указывает Graywh Backspace часто представлен ^? , Чтобы связать ctrl+bksp в вашем файле .inputrc вам может потребоваться изменить библиотеку readline. Это руководство по Ubuntu включает новый файл .keytab который может переопределить вывод по умолчанию.

В моей системе это позволяет мне добавить "\e[9;3~": backward-kill-word к моему .inputrc .

Поскольку поведение readline несколько отличается в зависимости от вашей системы, стоит отметить, что я использую Konsole в Kubuntu.

2

Я сомневаюсь, что ваш терминал отправит специальный код для Ctrl-Backspace. Backspace обычно ctrl-?, И вы не можете добавить другой модификатор ctrl к символу ctrl.

Одной из альтернатив может быть то, что ваш терминал отправит специальную escape-последовательность для Ctrl-Backspace, а затем отобразит это в вашей конфигурации readline.

1

Это работает для меня (в urxvt, bash):

"\b":backward-kill-word
1

Для терминала linux вы можете сделать это, изменив раскладку, загружаемую при запуске. В Ubuntu по умолчанию он загружает /etc/console-setup/cached.kmap.gz . Если вы найдете запись, соответствующую Ctrl-Backspace (вероятно, Control-Delete уже указана как Backspace), вы можете изменить ее на Control_w . Не уверен насчет эмуляторов терминала, но konsole (эмулятор терминала KDE по умолчанию) имеет довольно приятные настройки для привязок клавиш. Надеюсь, это поможет :)

Крис

0

Для пользователей Mac, подключающихся к нескольким системам Linux:

Если у вас нет доступа к .inputrc или любым другим файлам конфигурации в системе, к которой вы обращаетесь, и хотите, чтобы все работало универсально, независимо от того, в какую систему вы входите, вот решение с графическим интерфейсом, использующее Iterm2.

Я установил Iterm2 на моем Mac из командной строки на моем Mac с помощью brew (https://brew.sh)

brew cask install iterm2

Как связать последовательность клавиш с управляющим ключом в Iterm2

  1. Загрузите бесплатное приложение «Ключевые коды» из магазина приложений. Установите его по ссылке ниже, а затем откройте его.

  2. Нажмите Ctrl+некоторую клавишу, в этом случае я буду использовать Ctrl+w.

    Как получить шестнадцатеричный код

  3. Шестнадцатеричный код в красном квадрате - это код, который мы хотим отправить в терминал

  4. Теперь сопоставьте последовательность клавиш в Iterm2, открыв ее в папке «Приложения» -> «Настройки» -> «Ключи» ->+.

Как сопоставить команду с шестнадцатеричным кодом

  1. Теперь это отобразит opt+← delete на Ctrl+w в терминале, но вы можете использовать его для сопоставления любой клавиши с другой. Я знаю, что Ctrl+w - плохой пример для Emacs, поскольку он не поддерживает Ctrl+w, но вы можете использовать эту методологию для сочетаний клавиш, совместимых с Emacs.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .