配置一个适合算法竞赛的VSCode

Published on
224 38~49 min

0 在阅读之前

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

1 为什么使用VSCode

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

  1. 插件功能多:VSCode有很多不同功能的插件:界面主题,语言,美化和自动化插件等等,这些给予了最大限度的个性化和方便的代码编写与运行。

  2. 使用简单:创建编辑源代码,编译和运行非常简单,无需创建项目,适合学习过程使用。

  3. 速度快:作为一个代码编辑器,打开和响应的速度比IDE当然是快一些。

2 基本使用

2.1 下载与安装

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

download.png

大的下载按钮默认是下载User Installer x64的版本。User Installer表示安装给当前的计算机用户,只有此计算机用户可以使用VSCode,其他的计算机用户无法使用。System Installer则是安装给计算机上的所有用户,所有的计算机用户均可使用VSCode。下载哪个版本可以根据自己的喜好来定,下载完之后运行安装程序,在下图的安装阶段需要注意特别设置勾选这两项:

勾选这两项就可以非常方便的通过右键菜单使用通过VSCode打开文件/文件夹

2.2 使用

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

start.png

2.3 Settings.json

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

settings.gif

Settings.json中可以看到开头和结尾都有一个花括号,注意要添加的设置都必须放在花括号内。由于是json文件,所以填写必须符合json的语法规范。如果你不懂json的语法也没有关系,因为下文中的设置都是直接给好的,直接复制粘贴即可。

3 配置前需要准备的东西

3.1 Code Runner扩展(VSCode)

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

coderunner.png

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

  1. "code-runner.runInTerminal":默认false,结果在输出显示,这里需要设置为true,结果在终端显示。

  2. "code-runner.ignoreSelection":默认false,能选择部分代码运行,这里需要设置为true,不能选择部分代码运行。

  3. "code-runner.saveFileBeforeRun":默认false,在运行前不保存文件,这里需要设置为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 Helper扩展(VSCode)

Competitive Programming Helper扩展用于算法竞赛的题目样例自测。这个插件能让你方便的进行样例测试,非常适合算法竞赛的场景。还可以Competitive Campanion(浏览器)扩展快速获取题目页面上的样例,更加方便练习。

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

  1. "cph.language.c.Args" :设置C编译参数。

  2. "cph.language.cpp.Args":设置C++编译参数。

  3. "cph.general.timeOut":设置程序运行时间限制。

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

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

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

g++.png

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.png

接下来验证一下Python是否已经被安装好,按下Win+R输入“powershell”并运行,在powershell中输入指令python,如果出现>>提示符则配置成功。此外也可以通过Anaconda来配置Python环境(算法竞赛中用不了需要下载的包,所以其实也没必要),可以自行搜索教程。

在VSCode中编写py文件时,可能右下角会显示如下图的警告,这是要求我们选择一个Python环境,这样语法检查器可以正常的工作,选择我们刚刚安装好的环境即可。

interpreter.png

5.2 Settings.json配置

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

"code-runner.executorMap":{
    "python": "python -u"
}

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

coderunner2.png

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

配置步骤(谷歌,火狐配置方式类似):

  1. 安装Competitive Programming Helper扩展和Competitive Campanion扩展。

  2. 打开Microsoft Edge浏览器,右键右上角的“Competitive Campanion扩展”按钮,然后点击扩展选项条目,这会弹出新的页面和小窗,在小窗中修改Custom posts设置为8080(也可以选择其他可用端口)。

ports.png

使用步骤:

  1. 运行VSCode,在VSCode中打开一个文件夹。

  2. 在浏览器中打开扩展所支持任意的一个算法竞赛网站的题目界面,左键点击浏览器右上角的“Competitive Campanion扩展”按钮。

  3. 等待几秒后,VSCode会跳出一列选项让你选择写题所使用的语言。

  4. 选择语言后会弹出Competitive Programming Helper扩展的使用界面,这时候就可以编写代码并测试样例了。

use.gif

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

配置用户代码片段就是将你常用的代码片段变成一个快捷名称,能够减少重复写代码的麻烦,毕竟总不能日常打比赛或者练习时做每道题都要重新写一遍#include吧,当然这只能在日常练习中使用哦。下面来教教如何配置。

按下Ctrl+Shift+PF1打开命令面板,输入snippet,点击首选项:配置用户代码片段,点击cpp.json (C++)

snippets.gif

你会看到的文件内容如下:

{
	// 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就可以使用该代码片段。

use2.gif

更新日志:
2024.8.8 - 文章全面更新


Prev Post 矩阵快速幂与矩阵递推加速
Next Post 排序算法详解