Благодаря вашему вопросу я наконец-то прочитал и расширил понимание, ура!
Итак, очень хороший источник информации man readline
. Привязки клавиш, указанные в различных inputrc
файлах, управляют работой библиотеки чтения строк BASH. В соответствии с man-страницей readline вы можете использовать либо символические имена клавиш, либо escape-последовательности:
Key Bindings The syntax for controlling key bindings in the inputrc file is simple. All that is required is the name of the command or the text of a macro and a key sequence to which it should be bound. The name may be specified in one of two ways: as a sym‐ bolic key name, possibly with Meta- or Control- prefixes, or as a key sequence. The name and key sequence are separated by a colon. There can be no whitespace between the name and the colon. When using the form keyname:function-name or macro, keyname is the name of a key spelled out in English. For example: Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> output"
На странице руководства также указано, что файл конфигурации по умолчанию - это, ~/.inputrc
поэтому я рекомендую разместить там ваши привязки.
Если вы хотите использовать обычные буквенные клавиши (например, Control- g), Control-g: forward-word
работает нормально. Клавиши со стрелками сложнее. Я попытался и не смог найти название клавиши для клавиш со стрелками. Ни один из тех, которые я пробовал ( left-arrow
, left
, :left
) работал так, кажется, что мы застряли с управляющими последовательностями.
К сожалению, точная escape-последовательность отличается в терминальных эмуляторах (именно поэтому ваш Ubuntu inputrc имел несколько строк). Для того, чтобы выяснить, какой побег последовательность ваш любимый терминал использует, запустите read
и введите последовательность клавиш вы заинтересованы в В. terminator
, xterm
И gnome-terminal
, Control- Leftдать:
$ read ^[[1;5D
в aterm
:
$ read ^[Od <-- that is a capital O not a zero (0).
Немного поэкспериментировав, я понял, что ^[[D
есть Leftи ^[[1;5D
есть Control- Left. Первый ^[
- это Escключ, используемый здесь, я полагаю, для обозначения escape-последовательности .
В любом случае, для привязки Control- Leftк forward-word
таким образом, что работает для всех, я добавил эти строки к моему ~/inputrc
:
"\e[1;5D": backward-word "\eOd": backward-word
По причинам, которые я до конца не поняла, Controlпредставляется то, \e
что должно быть Esc.
Мой последний ~/.inputrc
файл, который работает для всех терминалов, перечисленных выше:
"\e[1;5D": backward-word "\eOd": backward-word "\e[1;5C": forward-word "\eOc": forward-word