c - 无法将文件名分配给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 变量来做到这一点,因为我认为问题出在范围上
解决方案
正如@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
是因为我猜你想要带有完整路径的文件名。
推荐阅读
- javascript - 将数组映射到 API 调用 - 错误处理
- python - 以不同的形状绘制第一个点
- mysql - MySQL GROUP BY 没有聚合而不是 LIMIT
- join - ArangoDB 中的智能连接
- angular - SyntaxError:JSON.parse 错误:位置意外输入:281
- .net-core - 在自定义身份验证下运行的 Ocelot 网关 dotnet 核心尝试使用应用程序池身份发出下游请求
- javascript - make function run when click
- ios - 使用 ZStack 将动画视图与另一个视图组合
- javascript - 通过引用集合的 id 查找文档
- c# - 如何在不使用 ChartArea ASP.NET MVC 的情况下在图表上显示所有 X 值