Problem of HOME and END key in Vim on tmux
tmuxを起動中にvimを起動してHOMEキーかENDキーを入力すると、なにかおかしい。この記事ではこの問題の現象と解決策を記す。
1 Problem
tmuxを起動中にvimを起動してHOMEキーとENDキーを入力すると、それぞれ以下の文字が改行されて表示される。
H
F
シェルはbashとzshで確認した。Vimのノーマルモードとインサートモードで起きることを確認した。HOMEとENDはエスケープ文字として以下が割り当てられているので何かこれと関係があるのかもしれない。
^[OH
^[OF
Vimでエスケープ文字を確認するならば,C-vの後にHOME,
ENDキーを入力すれば表示される。
本来ならHOMEキーとENDキーはそれぞれ0,
$に対応する。つまり、行頭・行末への移動を意味する。コメントなどを書くときに多用するキーだ。使えないと不便だ。
以下のように私はインサートモードでC-aとC-eにもHOMEとENDを割り当てているがこれは問題なかった。つまり,C-aと入力すると行頭に移動でき,C-aと入力すると行末に移動できた。
inoremap
<c-e>
<END>
inoremap
<c-a>
<HOME>
Gnu
screenではこんな問題は起きていなかった。原因はよくわからないがとりあえず解決できたので以下で対処法を記す。
2 Solution
以下のサイトの記事が参考になった。
bash
– With $TERM=’screen-256color’ under tmux, HOME and END keys don’t
work. Why? – Stack Overflow
http://stackoverflow.com/questions/8604150/with-term-screen-256color-under-tmux-home-and-end-keys-dont-work-why
以下の内容を~/.vimrcに記述すれば解決する。
map
<Esc>OH <Home>
map!
<Esc>OH <Home>
map
<Esc>OF <End>
map!
<Esc>OF <End>
この記述により^[OH、^[OFをそれぞれVimでのHOMEとENDキーに割り当てているようだ。mapとmap!に設定することでVimの全てのモードでこのキー割り当てを設定している。
なぜ、tmux起動中のVimでだけこんな問題が起こるのかわからないがとりあえずこれで解決した。