Ctrl/Alt/Opt shortcuts in IntelliJ Terminal
Problem
Opt/Alt- shortcut keys show up as symbols in the IntelliJ terminal (eg. Opt-B shows up as ∫
) , instead of performing the bash shortcut of moving to the previous word. (Readline, to be precise.)
Solution
(Tested in WebStorm/IDEA)
Put the below somewhere, eg. ~/.bash_profile
. If you use bash-it, you can put it in, say, .bash_it/custom/intellij-terminal.bash
.
if [ "$TERMINAL_EMULATOR" == "JetBrains-JediTerm" ]; then
bind '"ƒ": forward-word' # M-f
bind '"∫": backward-word' # M-b
bind '"∂": kill-word' # M-d
bind '"¥": yank-pop' # M-y
bind '"≥": yank-last-arg' # M-.
bind '"—": yank-last-arg' # M-_
bind '"†": transpose-words' # M-t
bind '"¨": upcase-word' # M-u
bind '"¬": downcase-word' # M-l
bind '"ç": capitalize-word' # M-c
bind '"®": revert-line' # M-r
bind '"`": tilde-expand' # M-~
# numeric arguments don't work
#bind '"¡": digit-argument' # M-1
#bind '"™": digit-argument' # M-2
#bind '"£": digit-argument' # M-3
fi
Context
Digging through the IntelliJ configuration didn’t reveal anything that could solve this, like how the Mac Terminal app or iTerm has an option (geddit?) to treat Option keys as Esc/Meta keys.
Looking at the environment via export
revealed a clue (TERMINAL_EMULATOR="JetBrains-JediTerm"
), and some googling led to the file /Contents/plugins/terminal/jediterm-bash.in
, which seems to be how IntelliJ initializes the terminal. You can view the contents online here.
The above is just one approach after examining that init config; other approaches could be to define JEDITERM_USER_RCFILE
and pointing it to a file with the above bind
calls.
Conclusion
Did it work for you? Did you do it differently? Let me know here, I’d love to hear from you!