【发布时间】:2017-01-24 11:57:29
【问题描述】:
我经常使用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,我会得到^[[H的HOME 键和^[[F的END 键 -
showkey --ascii也可以为 HOME 键工作和打印^[[H
我已经做了什么:
- 检查
TERM变量在.zshrc中未被覆盖 - 在
.zshrc中添加bindkey "${terminfo[khome]}" beginning-of-line和行尾等效项 - 在 .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
【问题讨论】:
-
你的 ~/.zshrc 中的 TERM 变量是否被覆盖?
-
不,它没有被覆盖
-
好的,如果强制扫描码不起作用,我认为下一步是检查读取线从 IntelliJ 终端中获取的键码。您能否运行
showkey --scancodes,然后按Home并将输出粘贴到您的问题中? -
@AshutoshJindal:完成:showkeys 失败。非常感谢您的帮助!
-
我可以在与您相同的 OSX (10.10.x) 和 Intellij Idea 版本上重现此问题。我知道您正在使用 zsh,但是请您检查以下内容。将 IntelliJ 中的终端更改为 bash(首选项 -> 终端 -> /bin/bash 或等效项)并重现问题。然后尝试编辑 ~/.inputrc 并添加以下内容:
"\e[H": beginning-of-line和"\e[F": end-of-line然后检查这是否解决了 bash 的问题(它对我有用)。我正在尝试隔离问题(这似乎是 zsh config 和 Intellij 的组合)。
标签: intellij-idea zsh zsh-zle