无法在vim中为环境变量分配文件名

时间:2019-04-07 22:16:25

标签: c gcc vim environment-variables

最后我想使用vimux用gcc编译我的源代码

(假设文件名是test.c)

在使用vimux之前

:!gcc % -o test

我安装了vimux之后

nmap <leader>z :let $file_name = expand('%:t:r')<cr>:let $full_file_name = %<cr>:call VimuxRunCommand("gcc $full_file_name -o $file_name")<cr>

但是我有错

  

无效的表达式:%

我也尝试通过使用vim变量来做到这一点,因为我认为问题在于范围

1 个答案:

答案 0 :(得分:0)

正如@JonathanLeffler所说,make更好,但是如果您真的想继续使用gcc,则应该:

  • 还扩展$full_file_name,而不仅仅是file_name
  • 使用shellescape,您不希望文件名中的空格成为问题

您的代码应类似于:

nmap <leader>z :let $file_name = shellescape(expand('%:t:r'))<cr>:let $full_file_name = shellescape(expand('%:p'))<cr>:call VimuxRunCommand("gcc " . $full_file_name . " -o " . $file_name)<cr>

%:p是因为我想您想要具有完整路径的文件名。