Saturday 15 March 2014

Vim でマウスホイールのスクロールでガタガタ動いてほしくない

今使っているノートPC のタッチパッドは割と大きめに作られていて,しかも指二本でスクロールするとマウスホイール廻した感じのアレになるようになっている.便利は便利なのだが,ちょうど位置的に文書をタイプしている時に指が誤って当たってしまうことがあり,そのたびに Vim でカーソルがぐるっと動いて若干鬱陶しい思いをしていた.指二本でスクロール自体は割合便利なので完全に disable はしたくないから,Vim さんがそれを意に介さないようにすればよい,ということで Vim でマウススクロールを無効化する感じのアレ.


Vim でカーソルといえば,:help xterm-mouse-wheel とか :help mouse-using とかが出てくるけど,mouse オプションはほとんど切ってあるし,色々試すも今ひとつ要領を得ない.
最終的に助けになったのは ここ で, :help scroll-mouse-wheel とかを見ながら
:map <mouseup><nop>
:map <mousedown><nop>
とかやればいいんじゃない,という話で(<mouseup> は deprecated で今は scrollwheelup 使えってことらしいけど),それで駄目なら(僕もそうだった) terminal 側が何か (<up> とか)に map してるんじゃないか,という suggestion がある.この事例では gnome-terminal, 僕の場合は今は konsole だ.なるほど,と思って
:map <up> :echo "hi"<CR>
とかやってマウスくりくりすると,確かにこれに map されてるみたい.
というわけで,konsole の設定でそのへん外しても良いのだが,vim 外ではスクロールも便利に使ったりしてるのでこっちは切らずに, Vim 側に無視してもらうことにする.<up> とか普段使わないし不便もしないでしょう.
nnoremap <Up> <Nop>
nnoremap <Down> <Nop>
というか,そういえば <Up> とかって Vimmer としてはどっちかというと使ったら負け感があるような….方向キーのアレ,ですよね?
ついでに他のにも犠牲になってもらおう
nnoremap <Left> <Nop>
nnoremap <Right> <Nop>
あれ?この感じ,どこかで見たことあるような……

→これですね
vimmer養成ギプス - Self Reference

なるほど.ついでに autoload の意味もわかりやすい感.
<Left> とかは CTRL_w 系のアレにまわしてもいいかも知れない.とりあえず今回ので思いついて
nnoremap <C-Up> <C-w>k
とかやってみた.

No comments:

Post a Comment