VimGolfをするとVimがグングン上達する

VimGolfというサイトをご存知ですか? プログラマー界隈にはコードゴルフという遊びがあり、同じことをいかに短く書けるかを競うゲームです。

VimGolfはそのVim版。このサイトたまにサーバエラーで落ちているのが玉にキズです。

どんなことをするサイト?

このサイトでどんなことをするのかを、実際の問題を出して紹介します。

例えば以下の入力ファイルがあったとします。

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

これを、以下のファイルのようにvimで整形することを考えます。

2
3
5
7
11
13
17
19
23
29

これをいかに短い手数で完成できるかを競います。

まずは普通に考えてみると、最初の二行を消して、コンマを改行に置き換える方法が思いつきますね。

dj:%s/,/\r/g<CR>dd3kdd4kddZZ

まるで何かの呪文のようですが、実際にvimに入力したコマンドです。分解すると以下のような意味になります。

dj ← 最初の二行を消す

:%s/,/\r/g<CR> ← コンマを改行に置き換え

dd ← 現在いる行を削除
3k ← 3行上に移動
dd ← 現在いる行を削除
4k ← 4行上に移動
dd ← 現在いる行を削除
ZZ ← 保存して終了

これで26打です。

この問題のトップがどれくらいの手数で解いているかというと、なんと14打です。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-22-54-09

他の人のコマンドを見ることで、少しずつ上達する

このサイトのいいところは、自分でアカウントを登録して問題を解くと、その打数に応じて少しずつ上位の人のコマンドが見れるようになることです。

例えば24打の人のコマンドを見てみましょう。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-22-58-04

2D:%s/,/\r/g<CR>dd3k.3kk.ZZ

自分のものとあまり変わりませんが、dd(一行削除)のところを2回目以降は.(繰り返し)に置き換えることで打数を減らしています。

このように、他の人のコマンドを参考にしながら、現時点よりも良い打数でクリアしていくことで、どんどん上位の人のコマンドが見れるようになるのです。

これが、新しいコマンドを覚えるきっかけにもなりますし、やればやるほど短い打数でクリアできるようになっていくので、どんどんVimが上達します。

参加するには、Twitterアカウントが必要

実際にこのゲームに参加するには、まずページの右上からTwitterアカウントを登録します。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-20-23-07-27

そして、トップページにかかれているように、Rubyのgemコマンドでvimgolfをインストールします。

$ gem install vimgolf
$ vimgolf setup
$ vimgolf put (チャレンジしたい問題のID)

これだけです。あとは問題に応じたVimが開くので、問題を解くだけです。

是非Vimを上達したいと思っている方がいれば、是非VimGolfをオススメします。

実践Vim 思考のスピードで編集しよう! (アスキー書籍)
KADOKAWA / アスキー・メディアワークス (2014-01-28)
売り上げランキング: 13,249