一文解决win下vscode的Code Runner插件cpp文件命名不能携带特殊字符问题

本文介绍如何通过修改VSCode插件CodeRunner的settings.json文件,解决文件名包含特殊字符时无法正常运行的问题,并实现自动删除编译生成的exe文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vnl2qJ.jpg

背景

Code Runner是一款VS Code上的代码运行插件,响应速度比软件自带调试速度快,唯一缺点就是无法Debug。
之前的使用过程中,通过配置该插件的settings.json文件,在成功执行程序编译链接出的exe文件后,可以用del指令删除exe文件,保证文件夹内文件都是清一色cpp文件。
但是在使用过程中,又发现code runner运行的cpp文件名不能包含空格、括号等字符,使用起来体验感非常差。
在拜读多篇博客之后,又终于找到了一个一劳永逸的解决办法,特此将自己踩的坑记录一下。

方法:通过修改code runner配置文件settings.json,将filename前后加入’'来保证读入文件名为字符串

之前删除exe生成文件的博客(一文解决在ubuntu下,删除vscode插件code runner执行时c/cpp文件生成的exe文件)中提到,原本的配置文件内容为:

"code-runner.executorMap": {
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe && del $dir$fileNameWithoutExt.exe",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe && del $dir$fileNameWithoutExt.exe"
}//win下

这串代码的含义是进行三个由&&连接的指令

第一个指令为cd $dir,即转到当前cpp源文件目录下
第二个指令为g++ $fileName -o $fileNameWithoutExt.exe,即编译文件
第三个指令为$dir$fileNameWithoutExt.exe,即对控制台输入exe文件绝对路径,执行文件
第四个指令为del $dir$fileNameWithoutExt.exe,即在运行完文件后,删除编译出的执行文件

那么在这个过程中,如果cpp文件的fileName是hello world那么编译的时候会遇到空格符结束读入,换言之就会只读入hello

解决的方法是在fileName左右两边加上",这样就可以用转义字符的方法,将文件名用双引号括起。
但是这里的第三条指令需要额外修改,即加上(&)符号,含义为调用文件,因此该配置文件内容需要改为:

"code-runner.executorMap": {
        "c": "cd $dir && gcc \"$fileName\" -o \"$fileNameWithoutExt.exe\" && & \"$dir$fileNameWithoutExt.exe\" && del \"$dir$fileNameWithoutExt.exe\"",
        "cpp": "cd $dir && g++ \"$fileName\" -o \"$fileNameWithoutExt.exe\" && & \"$dir$fileNameWithoutExt.exe\" && del \"$dir$fileNameWithoutExt.exe\""
}//win下

后续补充

  • 10.23日,发现文件名前缀有[或者]都不能成功执行del指令
### VSCode Code Runner 插件使用指南 #### 安装与配置 为了在Visual Studio Code (VSCode) 中高效运行各种编程语言的代码片段,建议安装并配置 `Code Runner` 插件[^2]。通过点击左侧活动栏中的扩展图标或按下快捷键 `Ctrl+Shift+X` 来访问插件市场,在搜索框内输入 "Code Runner" 并选择由 Jun Han 开发的那个版本进行安装。 #### 运行代码 一旦成功安装了该插件之后,可以通过多种方式来执行代码: - **右键菜单**:选中要运行的部分代码或者整个文件后,鼠标右击弹出选项列表里会有“Run Code”的命令; - **顶部状态栏按钮**:当编辑器聚焦于某个支持的语言时,会在窗口底部看到一个小播放图标,单击即可快速启动所编写程序; - **命令面板调用**:利用全局可用的功能表(默认情况下可通过按F1激活),在里面查找名为 “Run Code” 的条目完成相同操作; ```json { "code-runner.runInTerminal": true, "code-runner.executorMap": { "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt", "python": "python3 -u" } } ``` 这段JSON展示了如何自定义不同脚本类型的解释器路径以及是否应该把输出重定向到集成终端而非内置的结果视图中去。 #### 常见问题解答 对于某些特定场景下的疑问,下面列举了一些可能遇到的情况及其解决方案: - 如果发现无法正常编译C/C++源码,则可能是由于缺少必要的构建工具链所致。此时应当参照官方文档指引安装MinGW-w64 或者其他兼容环境,并确保其bin目录已被加入系统的PATH变量之中。 - 当尝试调试Python项目而遭遇错误提示时,确认已正确设置了 Python 解释器的位置。通常可以在设置界面找到相应的入口来进行调整。 - 对于那些希望每次都能自动保存更改再提交给Code Runner处理的人而言,只需简单勾选偏好设定里的 `"code-runner.saveFileBeforeRun"` 即可达成目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

introversi0n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值