2015-03-19 4 views
1

Я пытаюсь расширить readline, добавив привязку для мета-ключа в моем inputrc. Я использую терминал (OSX)Binding meta in inputrc не имеет эффекта, macosx

В идеале я хотел бы добавить "\M-h": "\C-w"

Однако, я не могу связать любую мету ключа. У меня есть опция в Terminal, которая обрабатывает мой ключ опции как мета. В результате я могу просто ввести M-b. Привязка к нему в моем inputrc не работает.

Я пробовал использовать sed -nl, чтобы записать, какие escape-последовательности были отправлены на мой терминал. Нажатие M-x выходов ^[h, однако привязка как "^[h":"\C-w" не работает. Помощь очень ценится.

Редактировать: Вот sample file из документов readline, в котором показано, как связываться на основе отправляемых ключей ansi. Возможно, я не сопоставляю правильные клавиши эвакуации, есть ли лучший способ проверить, чем с sed?

ответ

1

Решение на мой вопрос заключается в следующем связывании: "\eh": "\C-w"

\e является отображением Readline на клавишу Esc.

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

Mac OS X «вариант, как мета-ключ» Терминала опция означает только> «префикс с ESC» - Chris Page

Таким образом, терминал обрабатывает Мета, как вариант, который в свою очередь, посылает ЭКУ Readline.

+0

Это ответ. – cdosborn

+0

ОК. Сожалею. Спасибо за разъяснение в ответе. –

0

Это правильный способ связать его? Разве это не должно быть keyname: function-name? Не разграбили его, хотя.

От человека страниц:

Readline 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 symbolic key name, possibly with Meta- or Control- prefixes, or as a key sequence. 

    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" 

    In the above example, C-u is bound to the function universal-argument, M-DEL is bound to the function backward-kill-word, and C-o is bound to run the macro expressed on 
    the right hand side (that is, to insert the text \u2018\u2018> output\u2019\u2019 into the line). 

    In the second form, "keyseq":function-name or macro, keyseq differs from keyname above in that strings denoting an entire key sequence may be specified by placing the 
    sequence within double quotes. Some GNU Emacs style key escapes can be used, as in the following example, but the symbolic character names are not recognized. 

      "\C-u": universal-argument 
      "\C-x\C-r": re-read-init-file 
      "\e[11~": "Function Key 1" 

    In this example, C-u is again bound to the function universal-argument. C-x C-r is bound to the function re-read-init-file, and ESC [ 1 1 ~ is bound to insert the text 
    \u2018\u2018Function Key 1\u2019\u2019. 

Также вы можете рассмотреть вопрос о поиске в/и т.д./INPUTRC, он имеет привязок по умолчанию присутствует.

+0

Я считаю, что это так. Вот [образец файла] (http://cnswww.cns.cwru.edu/php/chet/readline/rluserman.html#SEC12) из ​​документов readline. – cdosborn

 Смежные вопросы

  • Нет связанных вопросов^_^