在我的.vimrc中,我根据源文件类型设置了不同的makeprg,如下所示:
au BufRead,BufNewFile /home/me/cpp/**/**.cc set makeprg=g++\ %"
au BufRead,BufNewFile /home/me/c/**/**.c set makeprg=gcc\ %\"
这是很好的实践但不完美。这个设置的问题是你可以在某个目录下使用默认名称a.out的二进制文件。
为了更清楚地说,让我们说在同一个指令下有client.c和server.c。 在vim中编译client.c之后,应该先将a.out重命名为其他名称 可以编辑server.c并将其编译为vim。否则现有的a.out将被覆盖。
所以我想通过为gcc或g ++添加-o选项来改进设置,以明确地给二进制文件命名,而不是将其命名为“a.out”。而且我还想使用没有fiel类型扩展名的源文件名作为gvien源文件的二进制名称。例如,对于client.c,生成的二进制文件的名称将只是客户端。
只需要你的帮助告诉我在vim中如何做到这一点。提前谢谢。
答案 0 :(得分:2)
请参阅:help expand
。如果你执行%:r
,你将获得当前文件名,减去其上的最后一个扩展名。您更改的命令是:
au BufRead,BufNewFile /home/me/cpp/**/**.cc set makeprg=g++\ %\ -o\ %:r
au BufRead,BufNewFile /home/me/c/**/**.c set makeprg=gcc\ %\ -o\ %:r