如何在 IntelliJ 终端中支持 special/accented 个字符
How to have special/accented characters support in IntelliJ terminal
我经常使用 IntelliJ IDEA's Embedded Local Terminal,但有一件事让我抓狂:特殊字符和重音字符不起作用。
这是应该但不起作用的方法:
- HOME 键转到行首:什么都不做
- END 键转到行尾:什么都不做
- [CTRL + 向左箭头] 转到上一个单词:打印
D
- [CTRL + 向右箭头] 转到下一个单词:打印
C
- 所有重音字符:一开始什么都不打印,然后
?
当我按下另一个键时
可能还有其他组合应该但不起作用...但这些是最烦人的组合。
我正在使用:
- Ubuntu 16.04 virtual box guest 运行ning on a Windows 10 host
- IntelliJ IDEA 2016.2.4
- zsh
- oh-my-zsh
重要提示:
- 在 GNU 终端中(然后在 IntelliJ 之外)一切正常,所以我认为 "running inside a 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
中被覆盖
- 添加
bindkey "${terminfo[khome]}" beginning-of-line
和 .zshrc
中等效的行尾
- 在 .inputrc 中为
readline
添加行(这似乎是合适的)(好的,我现在明白这是无用的,因为 Zsh 不使用 readline)
edit :我可以使 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 现在可以了)
编辑:accented/special 字符现在在 IntelliJ 中得到了正确的支持(yeehaa!),确保至少具有以下版本:IntelliJ IDEA 2016.3.1, Build #IC-163.9166.29, built on December 9, 2016
我很欣赏 zsh 在 IntelliJ 之外工作得很好。
第 1 步
找到 Intellij 中终端使用的正确键码。这将取决于您使用的 OS。对于 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
并重启终端。
我经常使用 IntelliJ IDEA's Embedded Local Terminal,但有一件事让我抓狂:特殊字符和重音字符不起作用。 这是应该但不起作用的方法:
- HOME 键转到行首:什么都不做
- END 键转到行尾:什么都不做
- [CTRL + 向左箭头] 转到上一个单词:打印
D
- [CTRL + 向右箭头] 转到下一个单词:打印
C
- 所有重音字符:一开始什么都不打印,然后
?
当我按下另一个键时
可能还有其他组合应该但不起作用...但这些是最烦人的组合。
我正在使用:
- Ubuntu 16.04 virtual box guest 运行ning on a Windows 10 host
- IntelliJ IDEA 2016.2.4
- zsh
- oh-my-zsh
重要提示:
- 在 GNU 终端中(然后在 IntelliJ 之外)一切正常,所以我认为 "running inside a 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
中被覆盖
- 添加
bindkey "${terminfo[khome]}" beginning-of-line
和.zshrc
中等效的行尾
- 在 .inputrc 中为
readline
添加行(这似乎是合适的)(好的,我现在明白这是无用的,因为 Zsh 不使用 readline)
edit :我可以使 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 现在可以了)
编辑:accented/special 字符现在在 IntelliJ 中得到了正确的支持(yeehaa!),确保至少具有以下版本:IntelliJ IDEA 2016.3.1, Build #IC-163.9166.29, built on December 9, 2016
我很欣赏 zsh 在 IntelliJ 之外工作得很好。
第 1 步
找到 Intellij 中终端使用的正确键码。这将取决于您使用的 OS。对于 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
并重启终端。