首页 > 解决方案 > 无法将文件名分配给vim内的环境变量

问题描述

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

(假设文件名是 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 变量来做到这一点,因为我认为问题出在范围上

标签: cgccvimenvironment-variables

解决方案


正如@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是因为我猜你想要带有完整路径的文件名。


推荐阅读