Ранее я мог выводить символ тильды на моем терминале bash, нажав F10. Теперь, когда я нажимаю F10, я получаю два символа: «1 ~». То же самое касается F9/F11/F12. Как ни странно, другие функциональные клавиши F1-F8 дают мне тильду, но я хочу, чтобы F10 была моей тильдой.

Любые идеи, как это исправить?

3 ответа3

8

Ни одна из этих клавиш не является тильдой. Все они генерируют последовательность из нескольких символов, например ESC [24~ для клавиши F12 , или ESC [15~ для клавиши F5 (хотя F1-F4 немного отличаются), или даже ESC [5~ для клавиши PgUp .

Единственная причина, по которой вы получаете тильду, заключается в том, что синтаксический анализатор последовательности клавиш Bash использует общую часть, которую он знает (ESC [2), и останавливается, как только узнает, что полная последовательность будет неизвестна. Все, что следует (не обязательно тильда!) интерпретируется отдельно.

Обратите внимание, что это поведение может отличаться в программах на основе терминала: Bash (readline) имеет свой собственный код для интерпретации специальных ключей, Vim имеет свой собственный, Irssi снова имеет свой собственный. Некоторые программы могут полностью распознать ваше нажатие клавиши как F10 (и, следовательно, игнорировать его).


Чтобы сделать F10 действительным тильдым ключом во всем мире (для всей ОС), найдите инструменты "переназначения клавиш" (возможно, AutoHotkey).


Для того, чтобы сделать F10 тильды ключ во всех программах терминалов на основе поиска с помощью настроек терминала. (Терминал в данном случае относится к ConEmu.)

Терминал может иметь свою собственную функцию для переопределения отдельных ключей или, возможно, создания "макросов". (The ConEmu документация предполагает определение макроса с действием print(…)


Чтобы сделать клавишу F10 тильдой в Bash (но только Bash):

  1. Убедитесь, что ваш эмулятор терминала (ConEmu) не привязал F10 к какой-либо своей функции. (Обычная клавиша F10 обычно ни к чему не привязана, однако Shift+F10 - это стандартная клавиша для открытия меню «щелчка правой кнопкой мыши».)

  2. В bash нажмите Ctrl V (буквенная вставка), а затем F10. Вы увидите последовательность вроде ^[[21~ .

    (Начальная ^[ представляет ESC, а остальные являются буквальными символами.)

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

  3. Откройте (или создайте) файл ~/.inputrc в текстовом редакторе.

  4. Добавьте эту строку, взяв последовательность из шага # 2 и заменив ^[ на \e:

    "\e[21~": "~"
    

    Это говорит inputrc вставлять ~ при получении ESC [21~ .

  5. Снова откройте оболочку Bash (или нажмите Ctrl X, Ctrl R, чтобы перезагрузить inputrc).

2

Какую раскладку клавиатуры вы используете?

Существует специальная тильда ~ ключ чуть выше Tab на стандартной клавиатуре США.

-1

Я исправил это, удалив ~ .inputrc, который в любом случае не имел ничего полезного.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .