f

アーカイブ

2014-09-12

Problem of HOME and END key in Vim on tmux

tmuxを起動中にvimを起動してHOMEキーかENDキーを入力すると、なにかおかしい。この記事ではこの問題の現象と解決策を記す。

1 Problem

tmuxを起動中にvimを起動してHOMEキーとENDキーを入力すると、それぞれ以下の文字が改行されて表示される。
H
F
シェルはbashzshで確認した。Vimのノーマルモードとインサートモードで起きることを確認した。HOMEENDはエスケープ文字として以下が割り当てられているので何かこれと関係があるのかもしれない。
^[OH
^[OF
Vimでエスケープ文字を確認するならば,C-vの後にHOME, ENDキーを入力すれば表示される。
本来ならHOMEキーとENDキーはそれぞれ0, $に対応する。つまり、行頭・行末への移動を意味する。コメントなどを書くときに多用するキーだ。使えないと不便だ。
以下のように私はインサートモードでC-aC-eにもHOMEENDを割り当てているがこれは問題なかった。つまり,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でのHOMEENDキーに割り当てているようだ。mapmap!に設定することでVimの全てのモードでこのキー割り当てを設定している。
なぜ、tmux起動中のVimでだけこんな問題が起こるのかわからないがとりあえずこれで解決した。

0 件のコメント:

コメントを投稿