使用vim在每个函数中添加调试打印代码

时间:2013-09-05 12:26:52

标签: c vim editor

我有一个庞大的代码文件,并希望在每个函数中插入打印代码。 我知道调试是一个选项,但我是Kernel的新手,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");
    // ...
}

1 个答案:

答案 0 :(得分:2)

一个快速的方法是在shell中:

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

这将为定位的c源代码文件中的每个函数添加print("someprint")。如果要在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>

希望这个帮助