配置一个适合算法竞赛的VSCode
0 在阅读之前
本文内容仅在Windows 10/11
系统里试验可行。其他版本的系统可能有所差异,如果你使用的是其他版本的系统,请仅将其作为参考。
1 为什么使用VSCode
VSCode是一个代码编辑器,它并不是IDE。但是凭借着插件,可以使得其的使用体验和IDE差不多,甚至远超IDE。为什么选择VSCode,在我看来有以下几点:
插件功能多:VSCode有很多不同功能的插件:界面主题,语言,美化和自动化插件等等,这些给予了最大限度的个性化和方便的代码编写与运行。
使用简单:创建编辑源代码,编译和运行非常简单,无需创建项目,适合学习过程使用。
速度快:作为一个代码编辑器,打开和响应的速度比IDE当然是快一些。
2 基本使用
2.1 下载与安装
点击VSCode下载页面。进入页面后,在左边可以看到如下图的Windows
版本的下载按钮:
大的下载按钮默认是下载User Installer x64
的版本。User Installer
表示安装给当前的计算机用户,只有此计算机用户可以使用VSCode,其他的计算机用户无法使用。System Installer
则是安装给计算机上的所有用户,所有的计算机用户均可使用VSCode。下载哪个版本可以根据自己的喜好来定,下载完之后运行安装程序,在下图的安装阶段需要注意特别设置勾选这两项:
勾选这两项就可以非常方便的通过右键菜单使用通过VSCode打开文件/文件夹
。
2.2 使用
现如今VSCode已有一套完整的初学者使用教程,你可以通过这些教程来学习VSCode的基础使用,所以在本文章中不会介绍VSCode的基础使用。现在,打开VSCode,点击演练下的内容,学习如何使用吧!然后你可以继续浏览下面的内容。
2.3 Settings.json
Settings.json
是VSCode的配置文件,通过修改其中的内容,可以实现对VSCode的配置。在VSCode中按下Ctrl
+Shift
+P
或F1
打开命令面板,输入setting
,点击首选项:打开设置(json)
,即可看到如下图的界面:
在Settings.json
中可以看到开头和结尾都有一个花括号,注意要添加的设置都必须放在花括号内。由于是json文件,所以填写必须符合json的语法规范。如果你不懂json的语法也没有关系,因为下文中的设置都是直接给好的,直接复制粘贴即可。
3 配置前需要准备的东西
3.1 Code Runner扩展(VSCode)
Code Runner
扩展用于一键代码编译运行。它的作用是将你预先设定好的编译和运行指令放到终端上执行。Code Runner
扩展通过一个▶按钮(在VSCode界面的右上角可以找到,如下图所示)或者快捷键Ctrl
+Alt
+N
来执行指令。
Code Runner
扩展有几个重要的设置(json):
"code-runner.runInTerminal"
:默认false,结果在输出显示,这里需要设置为true,结果在终端显示。"code-runner.ignoreSelection"
:默认false,能选择部分代码运行,这里需要设置为true,不能选择部分代码运行。"code-runner.saveFileBeforeRun"
:默认false,在运行前不保存文件,这里需要设置为true,在运行前保存文件。"code-runner.executorMap":{}
:用来设置对应语言的运行指令。
其中"code-runner.executorMap":{}
的文件格式大致是这样:
"code-runner.executorMap":{
"编程语言(c,c++或python)":"指令"
}
在"code-runner.executorMap":{}
中可以使用一些特殊的占位符(宏):
$fileName
:该占位符会被替换成运行的当前文件的文件名(带扩展名)。$fileNameWithoutExt
:该占位符会被替换成运行的当前文件的文件名(不带扩展名)。$dir
:该占位符会被替换成运行的当前文件所在的文件夹的绝对路径。
3.2 Competitive Programming Helper扩展(VSCode)
Competitive Programming Helper
扩展用于算法竞赛的题目样例自测。这个插件能让你方便的进行样例测试,非常适合算法竞赛的场景。还可以Competitive Campanion
(浏览器)扩展快速获取题目页面上的样例,更加方便练习。
Competitive Programming扩展有几个重要的设置(json):
"cph.language.c.Args"
:设置C编译参数。"cph.language.cpp.Args"
:设置C++编译参数。"cph.general.timeOut"
:设置程序运行时间限制。"cph.general.defaultLanguage"
:设置Competitive Campanion
扩展拉取题目样例后自动创建的源文件语言类型。没有Competitive Campanion
扩展可以忽略。
3.3 Competitive Campanion扩展(Google&FireFox&Microsoft Edge)
Competitive Campanion
扩展是辅助Competitive Programming Helper
扩展使用的一款工具,它可以将竞赛网站上的题目的样例拉取到VSCode,提供给Competitive Programming Helper
扩展使用。支持了很多算法竞赛训练网站,墙裂推荐。
需要在谷歌插件商店中下载。
3.4 语言扩展(VSCode)
在进行某个语言的配置前,要下载并安装对应语言的扩展,例如C/C++配置就需要下载安装C/C++
插件。语言扩展可以直接在扩展搜索栏中输入语言名来搜索到。
4 C/C++配置
4.1 配置MinGW环境
VSCode本身并没有包含C/C++的编译器,所以需要我们自行配置环境,这里选择使用MinGW-w64。
首先点击MinGW-w64下载页面。点开下载页面后往下滑动,可以看到大号加粗的标题:MinGW-W64 GCC-8.1.0。在它的下面可以看到有一系列的下载链接,选择其中一个下载即可,这里推荐下载x86_64-posix-seh
。(注:1386
表示32位,x86_64
表示64位,posix
表示可移植,win32
表示只支持win32,sjlj
、drawf
、seh
表示异常处理机制)。
下载完以后提取压缩文件中的“mingw64”文件夹到自己想要放的路径(例如“D:\Program Files”),记住该路径并加上“\mingw64\bin”,然后在系统环境变量中的系统变量的PATH
中添加这个文件路径即可。
要验证是否已经配置好,请按下Win
+R
输入“powershell”并运行,在powershell
中输入指令g++ -v
,如果出现以下的提示信息,则配置成功。
4.2 Settings.json配置
注意需要安装C/C++
扩展和Code Runner
扩展。配置如下。
"code-runner.ignoreSelection": true,
"code-runner.runInTerminal": true,
"code-runner.saveFileBeforeRun": true,
"code-runner.executorMap":{
"c": "cd $dir ; gcc $fileName -o $fileNameWithoutExt ; ./$fileNameWithoutExt",
"cpp": "cd $dir ; g++ $fileName -o $fileNameWithoutExt ; ./$fileNameWithoutExt",
},
运行指令可以根据自己的需要修改,比如可以加上-g
编译参数。配置完后即可使用Code Runner扩展的▶按钮或快捷键快速编译运行C/C++代码。
5 Python配置
5.1 配置Python环境
同样的,VSCode本身也没有包含Python解释器,需要自行配置环境。首先下载Python并安装。版本选择较新的即可,注意在安装过程中的第一步要勾选Add Python x.x to PATH
。
接下来验证一下Python是否已经被安装好,按下Win
+R
输入“powershell”并运行,在powershell
中输入指令python
,如果出现>>
提示符则配置成功。此外也可以通过Anaconda
来配置Python环境(算法竞赛中用不了需要下载的包,所以其实也没必要),可以自行搜索教程。
在VSCode中编写py文件时,可能右下角会显示如下图的警告,这是要求我们选择一个Python环境,这样语法检查器可以正常的工作,选择我们刚刚安装好的环境即可。
5.2 Settings.json配置
需要安装Python
扩展和Code Runner
扩展(可选)。配置如下。
"code-runner.executorMap":{
"python": "python -u"
}
配置完后即可使用Python扩展的▶按钮和Code Runner扩展的▶按钮或快捷键快速运行Python代码。
6 番外1-Competitive Programming Helper扩展和Competitive Campanion扩展混合食用指南
配置步骤(谷歌,火狐配置方式类似):
安装
Competitive Programming Helper
扩展和Competitive Campanion
扩展。打开Microsoft Edge浏览器,右键右上角的“Competitive Campanion扩展”按钮,然后点击
扩展选项
条目,这会弹出新的页面和小窗,在小窗中修改Custom posts
设置为8080(也可以选择其他可用端口)。
使用步骤:
运行VSCode,在VSCode中打开一个文件夹。
在浏览器中打开扩展所支持任意的一个算法竞赛网站的题目界面,左键点击浏览器右上角的“Competitive Campanion扩展”按钮。
等待几秒后,VSCode会跳出一列选项让你选择写题所使用的语言。
选择语言后会弹出
Competitive Programming Helper
扩展的使用界面,这时候就可以编写代码并测试样例了。
7 番外2-配置用户代码片段
配置用户代码片段就是将你常用的代码片段变成一个快捷名称,能够减少重复写代码的麻烦,毕竟总不能日常打比赛或者练习时做每道题都要重新写一遍#include
吧,当然这只能在日常练习中使用哦。下面来教教如何配置。
按下Ctrl
+Shift
+P
或F1
打开命令面板,输入snippet
,点击首选项:配置用户代码片段
,点击cpp.json (C++)
。
你会看到的文件内容如下:
{
// Place your snippets for cpp here. Each snippet is defined under a snippet name and has a prefix, body and
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
// same ids are connected.
// Example:
// "Print to console": {
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }
}
按照上面内容中的提示来就可以写出一个自己的代码片段。这里要注意的是$0,$1这些占位符(宏),$0所在的位置是使用代码片段后光标落下的位置,而$1所在位置只需要按下Tab
键就可以从$0移动过来,依次类推还可以有$2,$3......。下面给出我的一个C++代码片段配置:
{
"quick start":{
"prefix": "qs",
"body": [
"#include<bits/stdc++.h>",
"using namespace std;",
"",
"",
"",
"int main()",
"{",
" $0",
" ",
" return 0;",
"}"
],
"description": "a quick start of c++"
}
}
这样在编写C++源文件时输入qs
就可以使用该代码片段。
更新日志:
2024.8.8 - 文章全面更新