Vimスクリプト(その34)

mapの代わりにforを内部で使った関数でリスト処理を作ってみます。
書いてみます。
いつも使ってる1~10の数列をバッファに書いておきます。

:0r!wsl seq 10

リストの各要素に3を掛ける処理を行う関数を作ります。
引数の変数にアクセスには、a:を付けます。

:function Times3(mylist)
:  let b=[]
:  for m in a:mylist
:    call add(b,m * 3)
:  endfor
:  return b
:endfunction

関数が作成できたので、バッファ上の数値を変数aに取り込んで、リスト処理してみます。

:let a = getline("w0","w$")
:let result = Times3(a)
:call setline("w0w$",result)

各行が3倍になってますね。一番下の行は空行なので結果は0です。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA