AsRule.io Blog

Vim Script遊び

☕️ 1 min read

ランボルギーニのシリーズ名をランダムで出力するVimScript

個人的に最近、ShellとかVim Scriptにハマっています。

本当に個人的です。

正直まだ勉強中で、vimrc以外にVim Scriptを触ったことがないので 独学中です。

作ったものとしては、「ランボルギーニシリーズのCSVから乱数で、一つのシリーズを出力」するものです。

ユースケースとしては、ランボルギーニ以外にも、変数名とかに悩んだ時に使えるかなぁです。 (それであれば、codicなどを使いますね。)

完成形は下記です。 CSVについては、ちょっと怖いので割愛しますが、「ランボルギーニ シリーズ」で出てくるものをまとめただけです。

echo "Run Lamborghini Script"

function! s:token(line) abort
  return map(split(a:line, ','), 'v:val =~# "^[-+]\\?[0-9][.]\\?[0-9]*$" ? str2float(v:val) : v:val')
endfunction

let data = map(readfile('lamborghini.csv'), 's:token(v:val)')[1:]

function! GetRandom(min, max)
  return reltime()[1] % (a:max - a:min + 1) + a:min
endfunction

let ram = GetRandom(0, 31)

echo data[ram]

正直、あまり理解できていませんが、

tokenという関数で、その次に読み込まれるCSVの1行1行をパースしています。

GetRandomで、0 ~ 31の乱数を作って、結果の数を添字に、出力しています。

以上です。

このブログで言いたかったことは、私はランボルギーニが好きです。

一番は、「ムルシエラゴ」です。