如何在 vim (c/c++) 中超级快速地自动生成 Makefile?

Posted

技术标签:

【中文标题】如何在 vim (c/c++) 中超级快速地自动生成 Makefile?【英文标题】:How to generate automatically Makefile in vim (c/c++) super fast? 【发布时间】:2016-10-18 07:16:02 【问题描述】:

我对 vim 很陌生, 安装了几个插件,其中之一是 SnipMate, 这在编写简短的 Makefile 时非常有用。

snippet base
    PHONY: clean, mrproper
    CC = gcc
    CFLAGS = -g -Wall

    all: $1

    %.o: %.c        $(CC) $(CFLAGS) -c -o $@ $<

    $1:OUTPUT_FILENAME: $1.o
        $(CC) $(CFLAGS) -o $@ $+

    clean:      rm -f *.o core.*

    mrproper: clean         rm -f $1

但是手动添加文件名仍然需要时间, 我很确定有一些 Vim Magic :) ,在我写完这些 c 文件后,Vim 可以自动(通过热键执行),有什么建议吗?

谢谢大家!

【问题讨论】:

你可以前往 vim stackexchange 并在那里询问我猜想获得更好结果的机会。 @Hayt,我不同意。如果只是获取目录中每个 C 文件的未过滤列表,则有完全有效的方法是 100% gnu-make。它甚至比每次添加文件时都需要执行的 Vim 方法更简单。 @LucHermitte 是的,可以使用 gnu-make 方法来做到这一点。我指的是人们通常会制作一些“vim-magic”,stackexchange 可能会导致更多答案。从来没有说过这会是题外话。 @Hayt 几个人和我在 vi.SE 和 SO 上回答 vim 问题。关于获得高质量的答案,只要有些人因“跑题”或任何原因关闭,SO 上的 vim 问题就会得到答案。 @LucHermitte 是的,我只是想指出它也作为替代品存在。 ;) 虽然仍处于测试阶段。 【参考方案1】:

您可以使用glob()globpath() 自动提取文件名(不要问我有关导入结果的 SnipMate 语法——我正在维护另一个模板/sn-p 插件)。

但是如果你总是自动使用everything,你为什么不直接用make来做呢?有一些方法可以自动 glob 匹配模式的文件名。如果您需要修剪文件,那么在这种情况下明确列出您想要保留的每个文件都是有意义的。但不要忘记在每次触发 更新文件列表 操作时删除不需要的文件。

顺便说一句,IIRC,一个正确配置的 gnumake(即不是 mingw one)已经有 %.o: %.c 的规则

【讨论】:

以上是关于如何在 vim (c/c++) 中超级快速地自动生成 Makefile?的主要内容,如果未能解决你的问题,请参考以下文章

保存 .cpp 文件时在 vim 中自动格式化代码

如何在 eclipse vrapper 中使用 vim 样式的 ctrl p 列表?

我可以在 C/c++ 的 Vim 编辑器中执行 :wq 时使用 cppcheck

php变量的作用域和生存期

快速配置Linux下的Vim编辑器

在 Vim 中优雅地查找和替换