21/11/25:没想到这一篇已经破1200阅读了,更新一章新内容
22/1/22:重写文章,增加教程细致度,配上了更多的图片

0 在阅读之前

本文内容仅在Windows 10系统里试验可行。其他版本的系统可能有所差异,如果你使用的是其他版本的系统,请仅将其作为参考

1 为什么使用VSCode

VSCode是一个代码编辑的软件,它并不是IDE。但是凭借着插件,可以使得其拥有和IDE差不多一样的功能,甚至远超IDE。为什么选择VSCode,在我看来有以下几点:

  1. 插件功能多:界面主题插件,语言插件,美化插件,跑代码插件等等插件真的很方便。
  2. 使用简单灵活:创建源代码,编辑,编译和查看结果这些方面特别方便。(而vs20**想要完成这些操作并不方便
  3. 速度快:作为一个代码编辑器,打开和响应的速度自然比一些IDE要快。
  4. 方便算法竞赛:里面的一些独特插件和功能可以辅助你更好的进行算法竞赛。

2 基本使用

2.1 下载与安装

点击VSCode下载页面。进入页面后,在左边可以看到如图的Windows版本的下载按钮:

这里不管大的那一个按钮,选择下面的小按钮。User Installer表示安装给当前的计算机用户,只有此计算机用户可以使用VSCode,其他的计算机用户是无法使用的。System Installer则是安装给计算机上的所有用户,所有的计算机用户均可使用VSCode。建议下载System Installer 64bit版本的VSCode。下载完之后运行安装程序,除下图的安装流程有需要注意的设置外,其余安装流程均可自行设置。

在上图的安装流程中,建议勾选“其他”中的两个未勾选的设置,这样可以非常方便的在右键菜单通过VSCode打开文件或文件夹。

2.2 初步设置

安装完后打开,可以看到如图所示的界面:

可以看到是全英文的界面,别慌,我们只需要安装一个简体中文扩展即可让界面显示为简体中文:

首先选择红色框的按钮(Extensions),然后会在按钮右侧扩展出一栏,在黄色框内输入“chinese”后下方会显示许多扩展,选择绿色框的扩展,然后点击其中一个紫色框的按钮(install),就会下载并安装简体中文扩展。安装完后,右下角会弹出一个窗口提示你重启,选择“Restart”按钮,VSCode会重新启动,这样界面就会变成简体中文的了。

2.3 学习使用

现如今VSCode已有一套完整的使用教程,你可以通过这些教程来熟悉VSCode各项功能的使用,所以在本文章中不会介绍VSCode的一些使用方法。现在,打开VSCode,点击演练下的内容,学习如何使用吧!然后你可以继续浏览下面的内容。

2.4 Settings.json

Settings.json是VSCode的配置文件,通过修改其中的内容,可以实现对VSCode的设置。按下Ctrl+Shift+PF1打开命令面板,输入“setting”,点击“首选项:打开设置(json)”,即可看到如图的界面:

其中,我们要添加的设置都必须写在花括号内。由于是json文件,所以设置的编写必须符合json的语法。如果你不懂json的语法,那也没有关系,因为下文中的设置都是直接给好的,直接复制粘贴即可。

3 配置前的准备工作

3.1 Code Runner插件(VSCode)

Code Runner扩展用于一键代码编译和运行。它的作用是将你预先设定好的编译和运行指令放到终端上执行。Code Runner扩展通过一个▶按钮(在VSCode界面的右上角可以找到,如图所示)或者快捷键Ctrl+Alt+N来执行这个作用。

Code Runner扩展有几个重要的设置(json):

  1. "code-runner.runInTerminal": true:设置为在终端运行,默认是在输出。
  2. "code-runner.ignoreSelection": true:取消选择部分代码进行运行的功能。
  3. "code-runner.saveFileBeforeRun": true:在运行前保存文件。
  4. "code-runner.executorMap":{}:用来设置运行指令。

其中"code-runner.executorMap":{}的文件格式大致是这样:

"code-runner.executorMap":{
    "编程语言(c,c++或python)":"指令"
}

"code-runner.executorMap":{}中可以使用一些特殊的占位符:

  1. $fileName:这段被替换成运行的当前文件的文件名(带扩展名)。
  2. $fileNameWithoutExt:这段被替换成运行的当前文件的文件名(不带扩展名)。
  3. $dir:这段被替换成运行的当前文件所在的文件夹的绝对路径。

3.2 Competitive Programming扩展(VSCode)

Competitive Programming扩展用于算法竞赛的代码样例自测。这个插件能让你快速的进行样例测试,适合算法竞赛的场景。配合Competitive Campanion扩展可以让你的日常训练和竞赛体验提升非常之多。

Competitive Programming扩展有几个重要的设置(json):

  1. "cph.argsC"="参数" :设置C编译参数。
  2. "cph.argsCpp"="参数":设置C++编译参数。
  3. "cph.timeOut": 2000:设置程序运行时间限制。
  4. "cph.defaultLanguage": "语言名":设置Competitive Campanion扩展拉样例后创建的样例对应空文件语言类型。没有Competitive Campanion扩展可以忽略。

3.3 Competitive Campanion扩展(Google&FireFox&Microsoft Edge)

Competitive Campanion扩展是辅助Competitive Programming扩展使用的一款工具,它可以将竞赛网站上的题目的样例拉取到VSCode,供Competitive Programming扩展使用。支持很多算法竞赛训练网站,墙裂推荐。

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,sjljdrawfseh表示异常处理机制)。

下载完之后提取压缩文件中的“mingw64”文件夹到自己想要放的路径(例如“D:\Program Files”),记住该路径并加上“\mingw64\bin”,然后在环境变量的系统变量的PATH中添加这个组合的文件路径即可。

要验证是否已经配置好,按下Win+R输入“powershell”并运行,在终端输入指令g++ -v,如果出现以下的提示信息,则配置成功。

3.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”

接下来验证是否已经安装好,按下Win+R输入“powershell”并运行,在终端输入指令python,如果出现以下的提示信息,则配置成功。

这样就表示安装成功了。接着输入quit()退出然后输入pip list看看有没有flake8和autopep8。flake8是一个python的语法检查工具。autopep8是一个代码美化工具。如果没有flake8和autopep8的话就输入pip install flake8pip install autopep8来安装它们。

5.2 settings.json配置

需要安装Python扩展和Code Runner扩展(可选)。配置如下。

"python.linting.flake8Enabled": true,
"python.linting.flake8Args": [
    "--max-line-length=248"
],
"python.linting.pylintEnabled": false,
"python.formatting.provider": "autopep8",

"code-runner.executorMap":{
    "python": "python -u"
}    //可选配置

配置完后即可使用Python扩展的▶按钮或者Code Runner扩展的▶按钮和快捷键快速运行Python代码。

6 番外1-Competitive Programming扩展和Competitive Campanion扩展混合食用指南

配置步骤:

  1. 安装Competitive Programming扩展和Competitive Campanion扩展。
  2. 打开Microsoft Edge浏览器,点击右上角的“扩展”按钮,然后点击Competitive Campanion一栏右侧的“更多操作”按钮(注意它左侧的按钮一定是要在显示状态!),然后点击“扩展选项”,随后弹出页面,在“Custom posts”中填入8080。(谷歌,火狐配置方式类似)

使用步骤:

  1. 运行VSCode,在VSCode中打开一个文件夹。
  2. 在浏览器中打开扩展所支持任意的一个算法竞赛网站的题目界面,点击浏览器右上角的Competitive Campanion(绿色加号)扩展。
  3. 等待一段时间后,VSCode会跳出一列选项让你选择写题所使用的语言。
  4. 选择语言后弹出一栏Competitive Programming扩展的使用界面,然后即可编写代码并测试样例,如果算法竞赛网站是Codeforces,还可以提交代码。

8 番外2-配置用户代码片段

配置用户代码片段就是将你常用的代码片段变成一个快捷的替换符号,这在我们进行算法竞赛的时候用处可大了,毕竟,总不能日常打比赛时候做题每次都重新写一遍#include吧。当然这只能在日常打比赛中使用,方便于我们的上分。

按下Ctrl+Shift+PF1打开命令面板,输入“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可跳过,跳过之后继续$2,$3,...(它们和$1一样),完成后会跳到$0所在位置,${1:label}的功能则是在原本基础上把$1所在位置用label表示,但是它是一个占位符,仅当说明用,进行填写后会消失。下面给出我的一个代码片段配置(C++):

{
	"quick start":{
		"prefix": "qs",
		"body": [
			"#include<bits/stdc++.h>",
			"using namespace std;",
			"",
			"",
			"",
			"int main()",
			"{",
			"    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);",
			"    $0",
			"    ",
			"    return 0;",
			"}"
		],
		"description": "a quick start of c++"
	}
}

想了解更多的信息可以自助查询官方文档

Q.E.D.


Ik Hou Van Jou,sufei