LoginSignup
3
3

More than 5 years have passed since last update.

関数などのtemplateを作成するvimscript

Posted at

単体テストなどのコードを書く際など、テスト対象関数名にtest_をつけた名前にしてお決まりのおまじないを書くことが結構多い気がしたので、vimscriptの勉強も兼ねて少し考えて見ました。
test_func_bodyの中身にテスト関数で共通で行う内容を入れておくと、便利かもしれません。

sample.vim

function! TestFunc(target_func)
        let s:test_func="test_".a:target_func
        let s:test_func_body=[
                                \"    printf(\"%s start\", __func__);",
                                \"    printf(\"%s end\", __func__);",
                                \]

        let s:i=0
        call append(line(".")+s:i, s:test_func."();")
        let s:i+=1
        call append(line(".")+s:i, "void ".s:test_func."(void)")
        let s:i+=1
        call append(line(".")+s:i, "{")
        let s:i+=1
        for item in s:test_func_body
                call append(line(".")+s:i, item)
                let s:i+=1
        endfor
        call append(line(".")+s:i, "}")
        let s:i+=1
endfunction 

command! -nargs=1 UTFunc call TestFunc("<args>")

上記のサンプルの使い方は、テスト関数を作成したい場所にカーソルを移動して、そこで
UTFuncコマンドの引数にテスト対象関数を入れます。
例えば、sample関数のテスト関数を作成したい場合には、UTFunc sampleとすると
現在のカーソル位置に

sample.c

void test_sample(void)
{
    printf("%s start", __func__);
    printf("%s end", __func__);
}

のように出力されます。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3