Search code examples
viminclude-path

Pass Vim buffer variable as an argument for external command


The problem is that I need to pass include paths to the C++ compiler. I can define them for each buffer, like:

:let b:COMPILER_OPTIONS='-ggdb -I"E:\boost_1_42_0\boost\"'

But how do I expand b:COMPILER_OPTIONS on the command line ?

:!g++ program.cpp eval('b:COMPILER_OPTIONS')

doesn't work.

Or, if this isn't possible, what other ways are there for doing this ?


Solution

  • I don't think you can do it directly, but you can define a custom command:

    :command! -nargs=1 Gpp exe '!g++' b:COMPILER_OPTIONS '<args>'
    

    if you want filename completion you can add the -complete option:

    :command! -nargs=1 -complete=file Gpp exe '!g++' b:COMPILER_OPTIONS '<args>'
    

    usage:

    :Gpp program.cpp