如何在IntelliJ终端中支持特殊/重音字符

时间:2016-09-16 09:44:01

标签: intellij-idea zsh zsh-zle

我使用IntelliJ IDEA's Embedded Local Terminal相当多,但有一件事让我疯狂:特殊和重音字符不起作用。 这应该是但不起作用:

  • HOME键转到行尾:什么都不做
  • END键转到行尾:什么都不做
  • [CTRL +向左箭头]转到上一个字:打印D
  • [CTRL +向右箭头]转到下一个字:打印C
  • 所有重音字符:首先打印任何内容,然后在我按下另一个键时打印?

可能有其他组合应该但不起作用......但这些是最烦人的组合。

我正在使用:

  • 在Windows 10主机上运行的Ubuntu 16.04虚拟机客户机
  • IntelliJ IDEA 2016.2.4
  • 的zsh
  • OH-MY-的zsh

重要说明:

  • 在GNU终端(然后是IntelliJ之外)一切都运行良好,所以我不认为“在VM内部运行”是问题的根源。
  • 如果我运行bash而不是zsh特殊字符正在工作(主页,结束,下一个工作等等)但我仍然没有重音字符的支持(打印),并且我真的更喜欢使用zsh。
  • showkey --scancodes打印Couldn't get a file descriptor referring to the console
  • 如果我开始od -c我获取了HOME键的^[[H和END键的^[[F
  • showkey --ascii也为HOME键工作并打印^[[H

我已经做了什么:

  • 检查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#comment=27-1292473

他们认为很快就会从oh-my-zsh中抛弃smkx(这似乎是问题的根源)。我已经检查了this PR,现在我的键工作正常(仍需要绑定,但CTRL + LEFT和CTRL + RIGHT现在还可以)

编辑:IntelliJ(yeehaa!)现在正确支持重音/特殊字符,请确保至少具有以下版本:IntelliJ IDEA 2016.3.1, Build #IC-163.9166.29, built on December 9, 2016

1 个答案:

答案 0 :(得分: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
例如

(与OP的情况一样):

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

并重新启动终端。