Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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

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

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

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

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

sample.c
voidtest_sample(void){printf("%s start",__func__);printf("%s end",__func__);}

のように出力されます。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>