Vim
VimGolf

VimGolfでvimの練習をしてvim力を向上させる

概要

vimを用いてお題に沿ったテキスト編集を、どれほど少ないキーストロークで実現できるかを競うWebサービス及びツールであるVimGolfに初挑戦する。本記事では、アカウントを登録して、適当な問題を1問回答後、結果をアップロードするまでの流れを確認する。

vimGolf(vimゴルフ) とは

vimGolfは、お題として指定されたテキスト編集を、どれほど少ないキーストローク数で実現できるかを競うWebサービス及びツールである。

vimはカーソル移動やテキスト編集を効率的に行う術が豊富であるため、それらを巧みに使いこなすことで、複雑なテキスト編集も非常に少ないキーストローク数(タイプ数)で実現することができる。vimGolfでは、誰が最も少ないキーストローク数でテキスト編集を行えるかを競う。

問題を自分の力で創意工夫して解いても良いし、人間を辞めてそうなvimmerがアップロードしたハイセンスなキーストロークの記録を見て勉強するのも良い。とにかくvim力を向上させて日頃のテキスト編集スピードを高めたい人にはピッタリのサービスだ。

アカウントを登録する

vimGolfに参加するためには、Twitterでの認証が必須(?)となる。
vimGolfにアクセスして、画面右側のplease sign inをクリックすることで、Twitterアカウントを用いたアカウント登録ができる。

登録が完了すると、以下のようにvimGolfKeyが取得できるので、それを控えておく。

vimGolfのインストール

vimGolfは、前述のアカウントの登録と、vimgolfコマンドのインストールを行うことで参加できる。vimgolfコマンドはgemで配布されているので、gemでインストールする。

$ sudo gem install vimgolf

vimgolfコマンドがインストールできたら、以下のようにsetupを行う。先程取得したvimGolfKeyをここで入力することで、vimGolfへの参加準備が完了する。

$ vimgolf setup

Let's setup your VimGolf key...
1) Open vimgolf.com in your browser.
2) Click "Sign in with Twitter".
3) Once signed in, copy your key (black box, top right).

Paste your VimGolf key: 0e2a216f02chogehoge90e841aca47
Saved. Happy golfing!

問題を解いてみる

今回は以下の問題を解いてみる。
Just the middle

vimGolfでは、問題毎に「元となるテキスト」と、「編集後のテキスト」が提示される。

上記の問題で言うと、「元となるテキスト」が

Leave only the
numbered lines.
LINE 1
LINE 2
LINE 3
That's all.
Thank you
very much.

で、「編集後のテキスト」が

LINE 1
LINE 2
LINE 3

である。要は真ん中の3行以外を削除しようというシンプルな問題だ。

上記URLの画面右側に書かれている、以下のコマンドを実行するとvimgolfが始まる。

$ vimgolf put 54862fbb3f90ac0002904cf5
Downloading Vimgolf challenge: 54862fbb3f90ac0002904cf5
Launching VimGolf session for challenge: 54862fbb3f90ac0002904cf5

vimgolfを開始すると、vimで「元となるテキスト」が開かれるので、自分の出来る限りの最小のキーストロークで「編集後のテキスト」を作成する。

作成完了後にファイルを保存すると、自信が行ったキーストロークの内容や、正解不正解、キーストローク数が確認できる。今回は":v/N/d:wq"というストロークで、スコアは11だった。

結果をアップロードするのか、再挑戦するのかなどを選べるので、今回はアップロードすることにした。

Here are your keystrokes:
:v/N/d<CR>:wq<CR>

Success! Your output matches. Your score: 11
[w] Upload result and retry the challenge
[x] Upload result and quit
[r] Do not upload result and retry the challenge
[q] Do not upload result and quit
Choice> x
Uploading to VimGolf...
Uploaded entry.
View the leaderboard: http://www.vimgolf.com/challenges/54862fbb3f90ac0002904cf5

Thanks for playing!

アップロードが完了すると、該当の問題ページに、以下のように結果が公開される。
687474703a2f2f71732e6e6e646f2e6a702f77702d636f6e74656e742f75706c6f6164732f323031382f30312f31643237663139666531633639323164363430333863633765613633363939312e706e67.png

上位を確認してみると、理論上の最高スコアは9点。
どうやら:wqで保存するよりも、ZZで保存したほうがストローク数は少ないようだ。