LoginSignup
1
2

More than 5 years have passed since last update.

Vimのカーソル移動を10倍速くする

Posted at

これを設定ファイルに書くだけ!

設定ファイルは自分で特に何も変えてなければ~/.vimrcにあるはず。
なくても作れば勝手に読まれるはず。

nnoremap <S-k> 10<UP>
nnoremap <S-j> 10<DOWN>
nnoremap <S-h> 10<LEFT>
nnoremap <S-l> 10<RIGHT>

vnoremap <S-k> 10<UP>
vnoremap <S-j> 10<DOWN>
vnoremap <S-h> 10<LEFT>
vnoremap <S-l> 10<RIGHT>

これを反映してカーソル移動をh, j, k, lではなくてH, J, K, Lで行うと、カーソルがいつもの10倍動きます!!

15085980506lzwCv0EmkoWHCi1508597909.gif

以下蛇足

設定内容

nmapnormalモードの、vmapvisualモードのキー設定を示していて、<S-k>shift + kを意味しています。
<UP>はカーソルを上に動かすことを意味していて、vim は数字を付けるとその回数分繰り返されるので10<UP>でカーソルが 10 動きます。

設定ファイルを書かなくても、普通に vim を起動してnormalモードで15jとかやれば下に 15 カーソルが動きます。
それだけです。

これの強力さ

少し意識して vim を使う様にすると、案外1単語足したい消したいとか()の中だけ消したいとかが自然と出来る様になります。

例えば本当によくある操作として

  • public void foo(...staticを入れてpublic static void foo(...にしたい
  • String foo(String x)の引数を消してString foo()にしたい

とかがあります。

これって一例ですけど

  • publicのどこでも良いからカーソルを乗せる -> eと押すとカーソルがpubliccの部分に行く -> aでカーソルの右に字を書く(つまりe, a
  • voidのどこでも良いからカーソルを乗せる -> bと押すとカーソルがvoidvの部分に行く -> iでカーソルの左に字を書く(つまりb, i
  • (String x)のうちカーソルをとりあえず()の中に移動する -> di(で括弧の中を全部消す

みたいな操作でスカっと出来ちゃいます。本当です。

vim は単語や括弧の中身を扱ったり最寄りの半角スペースまで云々とかがものすごい得意なので、カーソルは割と雑に合わせても処理の起点として全然問題にならないからです。

なんで 10 か

いろいろ試してそうなっただけ。

ただ横移動は上にあるようにテキトーに単語に乗れば良いので、5 だとちょっと足りなかった。
イメージとしてはxxxxxxx yyyyyyy zzzzzzzで先頭からL, Lとして全単語に1度ずつ乗るくらいにしたかった。

上下移動は 4 行くらいなら目測でわかるから4kとか出来るし、それよりパッと見大きければKしてjjjとかすれば良い。

だから上下とも 10 が丁度良かった。

本来のH, J, K, L

本来のコマンドを潰してることになるので一応ふわっと解説。
ちなみにtab h Hとかやるとマニュアル開くよ。

  • H -> カーソルが vim に映ってる範囲の一番上に行く感じ
  • J -> カーソル行の改行を無くして下の行と連結する感じ
  • K -> マニュアルを開く感じ
  • L -> カーソルが vim に映ってる範囲の一番下に行く感じ

個人的には全部潰して良いので問題なし

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2