最近vimgolfやってる

最近はだいぶvimにも慣れてきて、下手にIDEを使うよりもvimを使う方が楽に感じるようになってきた。 ところが、友人の扱うvim技術を見ていると、どうやら、自分のvim使いはかなりよろしくないことがわかった。 そこで、一度しっかりと基本的なコマンドを覚えなおして、vimプラグインもちゃんと選択して、場合によってはvim scriptぐらいかけるようになりたいと思った。

その取っ掛かりとして、vimgolfをやってみようと思う。

vimgolf

http://www.vimgolf.com/

vimgolfとは、テキストが提供されてそれを目的の状態に修正する、そのときのキーストロークの長さをより短くする競技のようなものである。 例えば...

- One number per line -
-----------------------
2,3,5,7,
11,13,17,
19,23,29,

というテキストを提供されて

2
3
5
7
11
13
17
19
23
29

に修正するといったような具合である。

わかったこと

vimgolfでは、自分の提出したキーストロークよりも少し少ない数の提出者のキーストロークをみることができるので、それと自分のを見比べた。 結果、ほぼ、すべての課題であまり使ったこと無いコマンドが存在していた。

コマンド 意味
c 選択されている文字を削除してInsertModeに移行
r 選択されている文字を次に入力する文字に置換する
f fの次に入力する文字が次に出現する箇所にカーソルを移動
q 指定したキーストロークを登録し呼び出すことができる(マクロ)
. 直前に実行したコマンドを再実行
V 行全体を選択するVisualModeに移行

いくつか使ってなかった重要なコマンドを上げてみた。特に、qやc、fはかなり使われていた。実際、文字を新しく入力するよりも、修正することが多いので、削除して入力したり、似たような構造がいくつかあるような場合になマクロを組むと、一気に改善する場合が多かった。

逆に、修正という意味で利用していたvim sed(:%s)が、実際に使おうとすると、文字をすべて入力しないといけなくなるため、かなりキーストロークが伸びてしまい、vimgolfだとあんまり良い手段ではなかった、マクロで組んだほうがよかったりする。

これだけでも、かなり、vim使いが改善してきたように感じるので、これらのコマンドに慣れていきたい。