1

巨大なコード ファイルがあり、すべての関数に印刷コードを挿入したいと考えています。デバッグが1つのオプションであることは知っていますが、私はカーネルを初めて使用しkgdb、簡単で即時のオプションではないため、一時的にprintfを使用したいと考えています。

このタスクをより速く行うためにvimを使用multiple buffersしましたが、それを自動化する方法があるかどうか知りたい.vimrc 最終的なコードは次のようになります

void foo(int a, int b) {
    printf("Some print");
    // ...
}

int bar() {
    printf("Some print");

    // ...
}

void bleh(int b) {
    printf("Some print");
    // ...
}
4

1 に答える 1

2

これを行う簡単な方法の 1 つは、シェルを使用することです。

find -name '*.c' | xargs vim

vimではqq、マクロで記録を開始し、グローバルコマンドを利用します

:g/\v\s*(void|int) \w+\([^)]*\)/normal A^Mprint("some print");

そして、素晴らしいargdoコマンドを使用します:

:argdo normal @q

使用した変更を保存するには:

:argdo normal :w^M

print("someprint")これにより、配置された c ソース コード ファイルのすべての関数が追加されます。ステートメントで関数名またはファイル名をprint使用する場合は、次のような少し複雑な置換を使用してグローバル コマンドを使用できます (テストされていません)。

:global /\v\s*(void|int) \w+([^)]*)/s/\v(\w+)\([^]]*\)\s* {/\=submatch(0) . '\r\t\tprint(in file.function:'. expand('%') .'.'. submatch(1) . ');'

^M と ^[ はリテラル文字列ではないことに注意し<C-v><CR>てください。<C-v><Esc>

この助けを願っています

于 2013-09-05T18:02:53.517 に答える