Переназначение ключей в iterm2

15

Я пытаюсь переназначить некоторые комбинации клавиш по умолчанию в iTerm2 и хотел бы понять, что происходит, когда я связываю клавиши с «Отправить шестнадцатеричные коды».

Предыдущий пост помог мне начать работу с переназначением комбинаций клавиш ctrl-a и ctrl-e соответственно на cmd-left и cmd-right, но я бы хотел переназначить и другие комбинации клавиш. ( Ссылка на предыдущий пост Stackoverflow ).

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

Сообщество
источник
Не имеет ничего общего с Bash. Удален тег.

Ответы:

16

Эти шестнадцатеричные коды являются просто последовательностями байтов. Например, сопоставление комбинации клавиш, в 0x66 0x6f 0x6fкоторой она будет вставлена foo. 0xc3 0xa4вставил бы, если вы используете UTF-8. 0x1b 0x1b 0x5b 0x43значит escape escape [ C.

Некоторые последовательности байтов, такие как escape-последовательности ANSI, и даже отдельные байты, такие как управляющие символы ASCII, имеют специальные значения в терминалах.

Чтобы заставить ⌘ ← и ⌘ → перейти к началу и концу строки, вы можете назначить их 0x01 (^ A в обозначении каретки) и 0x05 (^ E в обозначении каретки):

  • ⌘ ←: Отправить шестнадцатеричные коды: 0x01
  • ⌘ →: отправить шестнадцатеричные коды: 0x05

Вы можете удалить слово вперед, назначив его \ed:

  • ⌥⌦: отправить ^ [д

Изменение ⌥ ← и ⌥ → на \ebи \efв настройках iTerm также приведет к их изменению в программах, которые не поддерживают комбинации клавиш readline или emacs. Другой вариант - добавить это в ~ / .inputrc :

"\e\e[D": backward-word
"\e\e[C": forward-word

Вы можете запустить readи нажать комбинации клавиш, чтобы увидеть, какие символы они вставляют. Например, ⌥ ← вставляет ^[^[[Dпо умолчанию, где ^[находится escape в обозначении каретки .

Смотрите также http://code.google.com/p/iterm2/wiki/Keybindings .

LRI
источник
Благодарю. Я сталкиваюсь с этим ответом при поиске решения моего вопроса здесь . Как я могу найти шестнадцатеричный код для конкретной комбинации клавиш? (в моем случае я заинтересован в комбинации Ctrl+Alt+<char>с <char>того i, j, k, lи u)
Амелио Васкес-Рейн
6

Я бы посоветовал установить Key Codes ($ 0) от Many Tricks и найти для себя ярлыки.

Например, если вы хотите переназначить ярлык по умолчанию для (пересылки) удаления символа - который называется Ctrl-D ( ⌃D) - так же просто, как нажатие клавиши перемотки вперед ( ), вы бы…

  1. Откройте приложение и нажмите Ctrl-D

    Пример ключевых кодов

  2. Вернувшись в iTerm 2, добавьте ярлык Unicode в iTerm> Настройки> Ключи

    iTerm отправляет шестнадцатеричные коды

Примечание: не копируйте и не вставляйте его, просто введите Unicode без пробелов.

Патрик
источник
2

Лучший способ, который я нашел, был либо с отправкой кодов клавиш (как описано в @pattulus, либо с помощью привязок клавиш vim.

Примечание по кодам клавиш: На самом деле вы не можете заставить его работать, отправив строку в юникоде, как описано выше, вам нужно отправить и модификатор, и ключ, чтобы получить в случае Control+, Dвам нужно отправить это как код: 0x840101 0x4где 0x840101модификатор управляющей клавиши и может быть получен через код ключа .

Примечание по отправке в виде последовательности vim : Как описано в документации к iTerm2 , вы можете отправить код ключа в формате vim-bindings, например, \<C-d>для отправки Control+ D(примечание, \которое важно).

Я лично предпочитаю привязку ключей vim, потому что она более читаема, и позже вы поймете, что сделали.

ExistMe
источник
1

Проверьте Карабинер .

В этом инструменте вы можете создавать ключевые пользовательские сопоставления, специфичные для приложений. Это идет с некоторыми инструментами, чтобы помочь с этим.

bdecaf
источник