Как обеспечить поддержку специальных / акцентированных символов в терминале 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
и перезапустите терминал.