Как обеспечить поддержку специальных / акцентированных символов в терминале IntelliJ

Я довольно часто пользуюсь встроенным локальным терминалом IntelliJ IDEA, но меня сводит с ума одна вещь: специальные и акцентированные символы не работают. Это то, что должно, но не работает:

  • Клавиша HOME для перехода в начало строки: ничего не делает
  • Клавиша END для перехода в конец строки: ничего не делает
  • [CTRL + стрелка влево] для перехода к предыдущему слову: печать D
  • [CTRL + стрелка вправо], чтобы перейти к следующему слову: печать C
  • все акцентированные символы: сначала ничего не печатает, затем ? когда я нажму другую клавишу

Возможно, есть и другие комбинации, которые должны, но не работают... но это самые раздражающие.

Я использую:

  • Гостевой виртуальный ящик Ubuntu 16.04, работающий на хосте Windows 10
  • IntelliJ IDEA 2016.2.4
  • ЗШ
  • о-мой-ЗШ

Важные заметки:

  • в терминале GNU (тогда за пределами IntelliJ) все работает отлично, поэтому я не думаю, что источником проблемы является "работа внутри виртуальной машины".
  • если я запускаю bash вместо zsh, специальные символы работают (начало, конец, следующая работа и т. д.), но у меня все еще нет поддержки propre акцентированных символов (печать ), и я бы действительно предпочел использовать Zsh.
  • showkey --scancodes печать Couldn't get a file descriptor referring to the console
  • если я начну od -c я получил ^[[H для ключа HOME и ^[[F для ключа END
  • showkey --ascii работает и печатает ^[[H тоже для ключа HOME

Что я уже сделал:

  • проверил что TERM переменная не переопределяется в .zshrc
  • добавлять bindkey "${terminfo[khome]}" beginning-of-line и конец строки эквивалентен в .zshrc
  • добавить строки (которые кажутся подходящими) в.inputrc для readline (Хорошо, теперь я вижу, что это было бесполезно, поскольку Zsh не использует readline)

редактировать: я мог бы заставить ключи home/end работать (см. принятый ответ ниже), но не клавиши CTRL+LEFT и CTRL+RIGHT (для прямого слова и обратного слова). После еще нескольких копаний это кажется проблемой с IntelliJ, который не на 100% правильно эмулирует терминал. 4

Здесь есть проблема с интересным вкладом от автора oh-my-zsh: https://youtrack.jetbrains.com/issue/IDEA-118848

Они считают отказ от smkx (который, кажется, корень проблемы) от oh-my-zsh в ближайшее время. Я проверил этот PR, и теперь мои ключи работают нормально (все еще нужны привязки, но теперь CTRL+LEFT и CTRL+RIGHT в порядке)


редактировать: теперь в IntelliJ должным образом поддерживаются акцентированные / специальные символы (yeehaa!), обязательно иметь по крайней мере следующую версию: IntelliJ IDEA 2016.3.1, Build #IC-163.9166.29, built on December 9, 2016

1 ответ

Решение

Я могу оценить, что Zsh отлично работает вне IntelliJ.

Шаг 1

Найдите правильные коды клавиш, используемые терминалом внутри Intellij. Это будет зависеть от используемой вами ОС. Для OSX и Linux od -c последующее нажатие клавиш приведет к выдаче кода клавиши.

Шаг 2

Как только у вас есть коды клавиш, измените ~/.zshrc:

bindkey "$HOME_KEY_CODE_FROM_STEP_1" beginning-of-line
bindkey "$END_KEY_CODE_FROM_STEP_1" end-of-line

например (как было в случае с ОП):

bindkey "^[[H" beginning-of-line
bindkey "^[[F" end-of-line

и перезапустите терминал.

Другие вопросы по тегам