Как установить привязки клавиш Readline, используя ALT (Meta) или другую управляющую клавишу в качестве префикса вместо `\C-` и `\e`?

Я думаю, вы можете, если вы подключены к хосту, который напрямую подключен к коммутатору, выполните:

ping -b <yourBroadcastAddress>

Скорее всего, ответит только коммутатор, поскольку он, скорее всего, в зависимости от марки коммутатора и конфигурации заблокирует пересылку широковещательного эхо-запроса.

2
05.12.2019, 04:37
3 ответа

Если я правильно понял ваш вопрос:

bind '"^[f": kill-word'

Определит Option+Fдля вызоваkill-word

0
27.01.2020, 22:08

Полезность будет:

showkey (1)          - examine the codes sent by the keyboard

но этого, кажется, не хватает на mac -os... вот это "Коды ключей"...?

Или вы набираете ctrl -V (qouted вставка ), а затем какую-то специальную клавишу. В bash это печатает ^[OPв xterm и ^[[[Aв консоли для клавиши F1.

Переменная readline:

keyseq-timeout (500)

— тайм-аут, используемый для половинной -законченной последовательности.

Под этим должен быть своего рода файл раскладки, в котором клавиши преобразуются в символы. Это из /usr/share/kbd/keymaps/mac/на Linux:

keycode 51 = Delete  Remove
        alt keycode 51 = Meta_Delete
        shift alt keycode 51 = Meta_Delete
        control keycode  51 = Remove
keycode 53 = Escape
        alt keycode 53 = Meta_Escape
        shift alt keycode 53 = Meta_Escape
keycode  54 = Control
keycode  55 = Alt         # Command/Apple key
keycode  56 = Shift
keycode  57 = Caps_Lock
keycode  58 = AltGr       # Alt/Option key

Вы видите гибкость! Мета-символ -Удалить может стать словом kill -...


bind '"^[f": kill-word

Это ^[должно быть \eили ctrl -V, затем Escape :один байт, а не циркумфлекс плюс квадратная скобка.


Это все равно, что сказать :^C означает управление -C, а не Shift -6, а затем Shift -c... в оболочке (bash )или в vim когда я набираю ctrl -v, а затем Esc, я получаю ^[, но это всего лишь один символ, когда вы отступаете на него. Вместе с этими опциями мета-флагов -в readline это может усложниться... Я просто иллюстрирую всю цепочку:

раскладка "default.map" (переводит скан-код и модификатор в символы клавиш)

keycode 105 = Left F150 F151
  string F150 = "\033[150"
  string F151 = "\033[151"
keycode 106 = Right F154 F155
  string F154 = "\033[154"
  string F155 = "\033[155"

F150 и F151 после дефолтного "Влево" означают сдвиг -и управление -стрелкой влево -. На втором этапе вы можете определить строку, в данном случае управляющую последовательность. Здесь \eне работает, но восьмеричное 033 — это ascii 27 — это управление -[ — это Escape... эта раскладка клавиш специфична для Linux, но X Windows имеет аналогичную логику.

И в.inputrc:

"\e[150": backward-word 
"\e[151": shell-backward-word 
"\e[154": forward-word 
"\e[155": shell-forward-word 

Это очень хорошо работает в консоли Linux. В xterm под X Windows (Xorg ):вообще нет :Xorg сам сканирует ключи.

backward-word can be invoked via "\e[150", "\e[1;2D", "\e[1;3D", "\eb".

Двое посередине с точкой с запятой — это модифицированные стрелки влево в стиле VTxxx. Это было предварительно настроено, а также автоматически привязывается к backward-word.

2
27.01.2020, 22:08

Я не думаю, что вы делаете что-то не так, вам просто нужно указать Terminal.app использовать вместо этого клавишу «Option» в качестве «Meta». Просто перейдите в настройки Терминала(+ , ), затем Профили , затем вкладку Клавиатура для профиля по умолчанию и установите флажок «Использовать Вариант в качестве мета-ключа».

Screenshot of Terminal.app "Profiles" → "Keyboard" settings

В противном случае вы получаете поведение macOS по умолчанию (в большинстве раскладок клавиш ), где Option + key создает специальные символы, точно так же, как Option + f дает строчная буква "f" с крючком с вашего скриншота (полная ссылка здесь).

В iTerm 2 , я считаю, что левая клавиша Option уже по умолчанию делает разумную вещь, но на всякий случай, вот как это изменить:

iTerm 2 Option key behavior

Что касается переназначения Option на Escape, если это то, что вы все еще хотите сделать, это можно сделать из предварительной панели «Клавиатура» в «Системных настройках», нажав кнопку «Клавиши-модификаторы…» в нижней части окна.

macOS System Settings Keyboard prefpane

Затем переназначьте его на что угодно (из доступных вариантов):

Remapping modifier keys in the macOS Keyboard prefpane

Я открыл эту панель настроек примерно в первые пять минут использования нового Mac, просто чтобы переназначить Caps Lock на Control, поскольку клавиша Control на клавиатуре Mac находится в неудобном месте.

5
27.01.2020, 22:08

Теги

Похожие вопросы