Розуміння контрольних символів у .inputrc


22

Мій обліковий запис Linux у віддаленій машині постачається із попередньо визначеними нижче .inputrc

"\e[1~": beginning-of-line
"\e[4~": end-of-line
\e[5~”: history-search-backward
\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on

Я читаю Баш документації GNU по темі , але я не зміг знайти розділ , що пояснює , які послідовності символів \e[1~, \e[5C, \e\e[Dі т.д. означають.

Я думаю , я де - то читав , що \eозначає , що meta character(я думаю , це Altв моїй клавіатурі), але не розуміють , що інші керуючі символи [, ~, і 5Dт.д. середній.

Хтось знає про хороший довідник по темі?

Відповіді:


21

Це послідовності відхилення коду управління ANSI , які передаються при натисканні на клавішу "терміналу" різних не алфавітно-цифрових клавіш.

\ e означає символ "ESCAPE" ASCII (восьмеричний 033, шестнадцятковий 1B, десятковий 27). Що є частиною введення послідовності команд (CSI).

Escape [ 2 ~- це послідовність символів, що передається при натисканні клавіші з написом "Вставити" на терміналі VT220 (або пізнішого) .

Багато з цих конвенцій були прийняті в програмному забезпеченні, такому як xterm та консолі / оболонки Linux - часто розширені різними, іноді несумісними способами.

Використання цих послідовностей у функції READLINE bash описано на сторінках man для перегляду рядків

       У другій формі "keyseq": ім'я функції або макрос, keyseq відрізняється
       з назви ключових слів вище, якщо рядки, що позначають всю послідовність ключів, можуть
       визначати, розміщуючи послідовність у подвійних лапках. Якийсь GNU
       Усунення клавіш у стилі Emacs можна використовувати, як у наступному прикладі, але
       символьні імена символів не розпізнаються.

          "\ Cu": універсальний аргумент
          "\ Cx \ Cr": перечитати-init-файл
          "\ e [11 ~": "Функціональна клавіша 1"

Щоб отримати список, які послідовності втечі відповідають яким клавішам клавіатури, ви можете скористатися командою, наприклад, infocmp -L -1абоinfocmp -L -1 xterm


Відмінно !! Це саме те , що я шукав. Дякуємо @RedGrittyBrick!
Амеліо Васкес-Рейна

+1. Я шукав Ctrlкод у inputrc-> ENTER= Ctrl+ n.
відмовитись

@ user1133275: посилання оновлено, але команда man 3 readline у вашій власній системі повинна надавати вам таку ж інформацію. Команда man 3 readlineтакож працює в WSL на WIndows 10 . У разі необхідності ви можете задати нове запитання щодо конкретних частин bind -Pпродукції, які створюють труднощі.
RedGrittyBrick
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.