![e0ff374389568e3a0ee03b114b137721.png](https://i-blog.csdnimg.cn/blog_migrate/969f9313c96f9e4181040a3775ab94ca.jpeg)
更新
原题为刷 OJ,现在改成了打 Codeforces,还是分享个人平时打 cf 的环境配置(顺便安利自己写的 cli 工具。
由于不知道什么时候 vscode 进行了更新,之前 0.1.0 版本的 tasks.json 会有警告,修改了一下之前的配置。
众所周知,vscode是目前一款非常优秀的轻量级文本编辑器,虽然集成了很多功能,但是由于需要配置环境,没有中文文档等问题,可能很多人并没有很好发挥它的强大功能。
后面内容的详细情况可以参考下面两个文档:
Documentation for Visual Studio Codecode.visualstudio.com![b117a67a24a4862804a5af32b1f19db7.png](https://i-blog.csdnimg.cn/blog_migrate/615abce9c8a3841a2ff0bd118f96eae2.png)
编译环境配置具体也可以参考(当时找了半天怎么没发现这个Orz):
在VSCode内编译运行C++blog.csdn.net编译调试环境
- 在vscode的扩展商店中,搜索"C/C++",安装微软官方的C/C++扩展。
![9e3a54fcbb91fee70c35dbcf2d7da109.png](https://i-blog.csdnimg.cn/blog_migrate/bff9013d5cd42ed45ecc968876fb10e4.jpeg)
2. 下载MinGW,安装完成后,打开 MinGW Installation Manager,选择gcc(C编译器),g++(C++编译器),gdb(调试器),下载安装。
![fb495ba5bb0e047dc0c23849795634c8.png](https://i-blog.csdnimg.cn/blog_migrate/0bae3daa9b06f551527e62bc4d9aed20.jpeg)
![eaf18f48ac49ab9780148b8a36a8b83f.png](https://i-blog.csdnimg.cn/blog_migrate/5d1101ed069f141813702a07b9b915c0.png)
3. 配置gcc,g++的系统环境变量。配置完成后,打开cmd输入指令后显示如下内容。
![261c28ddb9b59aa4b293645c87cc478f.png](https://i-blog.csdnimg.cn/blog_migrate/d28ceac83a23bb87a7c502504f166473.png)
4. 新建一个文件夹(可以视为一个项目),用 vscode 打开,随便敲一个 Hello World。按快捷键 ctrl + shift + p 打开 vscode 的命令行,输入 tasks,选择配置任务(Configure Task),选择其他,这时会自动生成并打开一个 tasks.json 的任务配置文件。
备注:在 VS Code 的新版本中,已经不需要复制粘贴以下的配置内容了,在 VS Code 的命令行内输入 Tasks: Configure Default Build Task 即可自动生成一个配置文件。
将文件做如下修改:
{
配置完成后,打开刚才写好的cpp,按快捷键 ctrl + shift + B,即可编译你当前文件,并生成对应的exe可执行文件。
这时,环境还没有调试功能,继续打开写好的cpp,选择左侧调试里面的小齿轮,配置 launch.json,选择C++(GDB/LLDB),这时又自动生成了一个 launch.json 文件,如下修改:
在新版本中,同样也是只需要使用自动生成的默认配置文件即可。
{
配置完成后,按F5,就可以自动编译cpp并打开,你也可以像visual studio中一样,使用断点,单步调试,查看变量,添加监视,查看调用栈。
备注:
- 在vscode中,一个文件夹就是一个项目,如果想要实现编译等功能,必须在一个文件夹中配置好这个项目环境才行,如果在其他地方敲cpp,则无法在vscode中进行自动编译。其中,项目中的 .vscode 文件就是这个项目的各种环境配置。
- tasks.json文件,可以理解为vscode自动在后台打开一个命令行,执行了类似如下的编译文件的命令:
g++ filename.cpp -o filename.exe
gcc filename.c -o filename.exe
你也可以打开cmd,输入这个命令,就可以编译当前文件下的filename,生成filename.exe。
如果你的编译遇到错误,problemMatcher会自动根据输出的错误信息,利用正则表达式处理后,显示在vscode上。
tasks.json和launch.json文件中,会自动获取当前文件夹的位置以及正在处理文件名称,通过变量${file}(文件名称), ${fileBasenameNoExtension}(无拓展名的文件名称), ${workspaceRoot}(工作文件夹位置)。
集成终端
在vscode中,可使用快捷键 ctrl + ` ,会自动在当前位置打开一个cmd(shell)。
win10下,如果不习惯使用 powershell,可以在设置中将集成终端改为 cmd。
点击左下角的小齿轮,打开设置,在右边的个人配置中输入:
"terminal.integrated.shell.windows": "C:WINDOWSSystem32cmd.exe",
这样就可以直接在vscode中,运行你的代码,进行调试。
我们也可以编写bat使用 filename.exe <in.txt >out.txt,将输入输出重新定向,便于样例测试,或者进行对拍等。
代码片段
打开左下角的小齿轮,点击用户代码片段,选择 C++,建立一个 cpp.json 配置文件。
类似如下设置:
{
配置完成后,新建一个cpp,只需要输入acm,代码补全会自动提示刚才设置的代码片段,按回车即可自动生成如下代码:
![2b0d5561bfb8299f0ee2f880f0bde64e.png](https://i-blog.csdnimg.cn/blog_migrate/cdd3d064f305b6ff6f4b42a1bbba7582.jpeg)
除此以外,代码生成完成后,光标会自动停留在maxn后,等待你修改1000的值,修改完成后按 Tab 光标会自动移动到下一个位置,我的设置是下一个输入全局变量(第8行),再按一次 Tab 光标跳转到主程序中。
简要的配置方法
你可以添加多个并列的代码片段,类似于上例,"ACM-Model" 代表该代码片段的名称。
prefix 代表需要匹配的前缀,这里是,输入 acm 代码补全就会显示这个片段候选。
body 代表你要输入的代码,其中 ${1:1000},1代表光标第一个移动到这里,1000为默认值;$2,代表 Tab 后光标第二个移动到这里。以此类推,特别地,$0 为最后一个到达的位置。
这样,大家就可以根据自己需要配置各种算法模板了。
icpc-cli:Codeforces 比赛命令行工具
核心功能:
- 自动从模板中创建一个比赛文件夹
- 快速打开一个比赛文件夹
- 文件输入测试
- 自动交题
首次使用时,新建一个全局文件夹,并在其中建立名为 Codeforces 的文件夹,在 config.py 内设置好,安装即可。
开始比赛前,输入以下一个指令,即可在全局文件夹中 Codeforces 目录下新建名为 547 的比赛文件夹,并自动进入(需要添加 vs code 到环境变量内)
icpc init 547 -cf
init 547 -cf
更多内容见 Github 仓库:
yjl9903/icpc-cligithub.com![30c0b80ca8a9c780ca0dd586284a500a.png](https://i-blog.csdnimg.cn/blog_migrate/13104a475f221e696ecd5436657f7b77.jpeg)
文件目录说明
- .vscode:vscode 调试环境配置
- attempt:写挂的,打的暴力,打表程序等等
- debug:输出的二进制可执行文件位置
- input:
- in.txt:默认输入文件
- out.txt:默认输出文件