From this post here:
One of the answer is:
autocmd filetype cpp nnoremap <F4> :!g++ % -ggdb -o %:r <CR> autocmd filetype cpp nnoremap<F5> :!g++ % -ggdb -o %:r && ./%:r <CR>
This works. But I would like to have 2 separate function: one for compile only and the other for run only, instead of compiling and run at the same time. So I changed it to this:
autocmd filetype cpp nnoremap <F4> :!g++ % -ggdb -o %:r <CR> autocmd filetype cpp nnoremap<F5> : ./%:r <CR>
The first command works, it compiles the cpp file whenever I press
F4. The second does not work. The reason, I think is because I am referencing
:r, which can only be found from the first command. So, vim does not know what
Of course, the fastest way to fix would be to do:
autocmd filetype cpp nnoremap <F4> :!g++ % -ggdb <CR> autocmd filetype cpp nnoremap<F5> : ./a.out <CR>
On Linux, without specifying the
g++ will compile into an
a.out file, and then I would just run
./a.out. This means that every single cpp file would get compiled to
However, I would like to retain the file name as part of the executable. For example,
test.cpp would compile to
Is there a way to do this?
TL,DR: With the answer from the links given, how can I compile and retain the file name with 1 shortcut, and then on a separate shortcut, run that executable (with the file name retained)?
:make %<navigate errors (:h quickffix) and execute with
:!./%<. Recently I ve given more details on reddit, and I also expand on the subject in an help page of my buildtoolswrapper plugin.