Estimated reading time: 1 minutes
Compiling C source in vim¶
The fabulous Miss Biddulph asks via the EADS Linux list:
Is there a way to make vim compile C files without a
Makefile?
A quick phone call later and we know that Laura wishes to emulate make’s
behaviour where calling make my_code without a Makefile will
attempt to build my_code from my_code.c. vim’s default
:make command doesn’t quite do the trick as it just calls make
without any arguments.
vim allows us to set options for specific file types only using the
:autocmd command, and this is the perfect time to use it.  We will set the
value of makeprg, which vim uses as the command to run with
:make, for all C and C++ files.
autocmd FileType c,cpp
    \ if empty(glob("[Mm]akefile")) |
    \   setlocal makeprg=make\ %< |
    \ endif
The %< in our makeprg definition refers to the current file with its
extension stripped.  We specifically only change the behaviour if no
Makefile exists so that we don’t interfere with the normal usage of the
:make command.
Authenticate this page by pasting this signature into Keybase.
Have a suggestion or see a typo? Edit this page