vim-fakearray ダミー配列を手軽に入力するプラグイン作った
プログラミングをしていると適当な配列が欲しい時ありますよね。
「0〜100の整数からランダムに10個選んだ配列」などなど。
そんなVimmerの要望を叶えるのがvim-fakearrayです。
vim-fakearrayはvim-fakeに依存しています。
vim-fakeについては作者の記事を参考にしてください。
qiita.com
インサートモードに<Plug>(fakearray)
のキーマップを割り当てれば、
プロンプトを呼び出してダーミー配列を手軽に挿入できます。
解説
呼び出し階層
<Plug>(fakearray)
→ fakearray#gen
→ fakearray#val
→ fake#gen
|fake#int
|fake#float
|fake#chars
fakearray#val
fakearray#val(first, second)
は引数によって呼び出すfake#
関数を変えます。
first | second | 呼び出し |
---|---|---|
整数 | 整数 | fake#int(first, second) |
少数or整数 | 少数or整数 | fake#float(first, second) |
文字列 | 整数 | fake#chars(fake#int(1, second), first) |
文字列 | 空文字列 '' |
fake#gen(first) |
fake#int fake#float
この2つは第1引数〜第2引数の範囲の値を返しますが、Vimのバージョンによっては正しく動作しないようです。
恐らくVimが内部で扱う整数のサイズに依存しているのでしょう。
64bit整数が追加されたのは7.4.1976のようです。
Vim8.0とNeovim0.2では正常に動作しました。
fake#chars
第1引数は生成する文字数です。
第2引数は'abc'
のような適当な文字列の他に、'\w'
などの文字セットを使うことが出来ます。
詳細はvim-fakeのドキュメントを見てください。
fake#gen
'job'
、'country'
、'word'
などのカテゴリを渡すことが出来ます。
fakearray#gen
fakearray#gen(num, first, second)
はfakearray#val
をnum
回呼び出して、結果をg:fakearray#separator
区切りで結合します。
b:fakearray_separator
も使えます。
(fakearray)
プロンプトに入力する値の個数によって動作が変わります。
入力数 | 動作 |
---|---|
1 | fakearray#gen({input num}, g:fakearray#prompt_first , g:fakearray#prompt_second ) |
2 | fakearray#gen({input1 num}, {input2 str}, '' ) |
3 | fakearray#gen({input1}, {input2}, {input3}) |
入力数1と3は見たまんまです。
2のときはfakearray#gen
の第3引数を''
にしているのでfake#gen
が呼ばれます。
内部で入力値にevalをかけているので文字列を入力するときはクオートを省略してはいけません。
キーマップ
インサートモードのキーマップは悩みますよね。
Emacsバインドにしている人は特に。
プラグインのデフォルトでは<F3>
に割り当てていますが、私は<c-/>a
に割り当てています。
ただし、<c-/>
をテキストとして入力しても動作しないので、代わりに<c-v><c-/>
で特殊文字を入力する必要があります。
最後に
Vimには乱数を生成する関数がないので、このプラグインではvim-fakeを使いました。
乱数を生成する方法は他にもあります。
初めてvim-themisでテストを書きました。
なかなか面白かったです。