# **0 在阅读之前**
内容里的所有操作仅在`Windows 10`系统里**试验可行**。其他版本的系统可能有所差异,如果你使用的是其他版本的系统,**请仅将其作为参考**。
# **1 为什么使用vscode**
**vscode**是一个代码编辑的软件,它并不是IDE。但是凭借着插件,可以使得其拥有和IDE差不多一样的功能,甚至远超IDE。为什么选择vscode,在我看来有以下几点:
1. **插件功能多**:界面主题插件,语言插件,美化插件,跑代码插件等等等真的很方便。
2. **使用简单灵活**:创建源代码,编辑,编译和查看结果这些方面特别方便。(**而vs20\*\*需要一系列步骤,还很烦**)
3. **速度快**:作为一个代码编辑器,打开和响应的速度自然比一些IDE要快。
# **2 入门使用**
## **2.1 下载与安装**
<a href="https://code.visualstudio.com/" target="_blank">下载地址</a>
进入页面后点击`Download for Winodws`下载,下载完后运行安装程序,整个安装过程按照默认设置来就行。
*注:默认没有勾选**将“通过Code打开”操作添加到Windows资源管理器文件/目录上下文菜单**这两个选项的话,那么一定要手动勾选上这两项!*
## **2.2 GUI介绍**
刚安装完打开,界面是全英文的,别慌,先来下面介绍各个板块的用途。

1. 菜单栏,提供一些操作,配置和使用的时候基本不会用到。
2. 从上到下五个图标分别表示:**资源管理器(Explorer)**,**搜索(Search)**,**源代码管理(Source control)**,**运行和调试(Run and debug)**,**扩展(Extensions)**,我们只需要用到**资源管理器**和**扩展**,没用到的可以通过右键把对应的一栏取消勾选来屏蔽掉。
3. 对应2的一个操作界面。
4. 编辑各种文件的区域,最上面显示打开了的文件。
5. 最左端显示语法错误和警告,右端会有一些信息和小的功能。点击最左端可以打开终端窗口。
## **2.3 安装第一个插件-简体中文语言包**
到目前为止还是纯英文的界面,这对于英语不好的使用者(本人就是)来说一定是不方便的,我们需要安装简体中文语言包。点击`插件(Extensions)`,在搜索框中输入`chinese`即可找到该插件,点击`install`安装,安装完后会提示重启软件,按要求操作即可。重启后,整个软件便会以简体中文显示。

**其他插件的安装方法也是同样的,下面不会赘述**。
## **2.4 创建文件和编辑**
**创建文件和编辑**一共有两种方式。
1. 输入快捷键`Ctrl`+`N`(或者点击`文件->新建文件`)可以直接创建一个单文件,之后需要你命名这个文件,**文件的类型初始默认为无,需要在命名保存前设定**。
2. 推荐的方法是先打开一个文件夹再新建文件。在`资源管理器(Explorer)`中`无打开的文件夹`中点击`打开文件夹`。选完文件夹后点击`新建文件`即可在文件夹里创建一个新文件并命名,**命名时要设定文件的类型**。**直接在桌面或者资源管理器(windows)中右键`通过Code打开`也可以打开文件夹**。
<p><div align=center><img src="https://www.waltz26.cn/upload/2020/3/05-03-0d1894f207ae44689364e79877c12e50.PNG"/><img src="https://www.waltz26.cn/upload/2020/3/05-04-6da00d07bfde422f96bc7159fe9908d3.PNG"></div></p>
vscode作为一个代码编辑器,有着非常多的编辑快捷键,可在<a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf" target="_blank">这里</a>查找你所需要的快捷键。
## **2.5 命令面板**
**命令面板**是vscode的主要交互界面,可以按下`Ctrl`+`Shift`+`P`来打开。在命令面板中你可以输入命令进行搜索(**中英文都可以**),然后点击下拉选项或者按下`Enter`就可以执行。通过命名面板可以执行各种命令,包括编辑器自带的功能和插件提供的功能,我建议你自行探索以求更好的了解。
## **2.6 终端**
**终端**是vscode中可以让你使用`cmd`和`powershell`的一个功能,可以通过按下`Ctrl`+`Shift`+<code>`</code>(或者菜单栏<code>终端->新建终端</code>)来打开。终端的页面是这样的:

上面的一行看起来不仅仅只有终端,那就都一一介绍一下它们,按钮从左到右分别是:
1. 问题:在有该文件类型的语法检查功能时显示当前文件中的语法错误。
2. 输出:不需要知道。
3. 调试控制台:不需要知道。
4. 终端:上面介绍过了。
5. 这是一个有下拉列表的选择框,可以切换到不同的终端。
6. 接下来是新建终端,拆分终端,删除终端,最大化终端和关闭终端面板的按钮。
在实际使用中,我们经常使用终端的界面来运行和调试程序。
## **2.7 设置**
**设置**可以通过菜单栏`文件->首选项->设置`或者快捷键`Ctrl`+`,`来打开。这里介绍两个设置修改。
1. 将`常用设置->files.autoSave`设为`onFocusChange`。
2. 将`功能->资源管理器->Confirm Delete`勾选框勾选。
vscode不仅可以通过设置界面来修改设置,还可以通过修改`settings.json`这个文件来修改设置。按下`Ctrl`+`Shift`+`P`打开命令面板,输入`setting`,点击`首选项:打开设置(json)`,在文件末尾插入以下代码:
```json
"files.autoSave": "onFocusChange",
"explorer.confirmDelete": false,
```
这样也可以做到和前一种设置相同的效果。要注意的是,json的文件格式:**每个相同缩进的语句用逗号隔开,其中最后一行语句末尾可以不用逗号**。
# **3 配置编程环境前的准备**
## **3.1 Code Runner插件(vscode)**
**Code Runner插件**用于代码一键编译和运行。它将编译指令,运行指令或两者的结合集成到一个▶按钮上,当你按下按钮时(也可以使用快捷键`Ctrl`+`Alt`+`N`),这个插件将会自动在终端(默认其实是**输出**)将你编写在设置里的指令运行,写一次指令就可以一直用,免去了繁琐。
<p><div align=center><img src="https://www.waltz26.cn/upload/2020/3/05-08-69a4d99f70ac4ebc9511b82832e31974.PNG" /></div></p>
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":{}`的文件格式大致是这样:
```json
"code-runner.executorMap":{
"编程语言(c,c++或python)":"运行指令"
}
```
其中在运行指令部分里:
1. `$fileName`:这段被替换成运行的当前文件的文件名(带扩展名)。
2. `$fileNameWithoutExt`:这段被替换成运行的当前文件的文件名(不带扩展名)。
3. `$dir`:这段被替换成运行的当前文件所在的文件夹的绝对路径。
## **3.2 Competitive Programming插件(vscode)**
**Competitive Programming插件**用于算法竞赛的代码样例自测。这个插件能让你快速的进行样例测试,适合算法竞赛的场景。配合Competitive Campanion插件用起来更加舒爽。

Competitive Programming插件有几个重要的设置:
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)**
**Competitive Campanion插件**是辅助Competitive Programming插件使用的一款工具,它可以将竞赛网站上的题目的样例拉取到vscode,供Competitive Programming插件使用。墙裂推荐。(谷歌浏览器插件下载有点麻烦,可能需要搭梯子才行)
## **3.4 语言插件**
在进行某个语言的配置前,要下载并安装对应语言的插件,例如**C/C\+\+配置就要下载并安装C/C++插件**。
# **4 C/C++配置**
## **4.1 配置MinGW环境**
纯净的vscode无法简单快速的运行和调试程序,所以我们需要自己搭建一个环境。这里用的是MinGW+Code Runner插件。
首先我们需要下载MinGW并配置。<a href="https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/" target="_blank">下载地址</a>。
点开页面后拉到下面的下载链接,选择最新的`MinGW-W64 GCC-8.1.0`。(注:`1386`表示适合32位,`x86_64`表示64位,`posix`表示可移植,`win32`表示供win32线程,`sjlj`、`drawf`、`seh`表示异常处理机制(这个选择seh吧))。
下载完之后解压缩文件夹到自己想要放的位置,然后可以配置环境变量了。你需要获得`.../MinGW/bin`这样的文件路径,然后在系统变量的`PATH`中添加这个文件路径即可。
验证是否已经配置好,按下`Win`+`R`输入`powershell`运行,输入`g++ -v`,如果出现以下的提示信息,则配置成功。

## **3.2 settings.json配置**
配置如下:
```json
"code-runner.executorMap":{
"c": "cd $dir ; gcc $fileName -o $fileNameWithoutExt ; ./$fileNameWithoutExt",
"cpp": "cd $dir ; g++ $fileName -o $fileNameWithoutExt ; ./$fileNameWithoutExt",
}
```
运行指令可以随意修改,比如加上[-g]参数。做完这一步就配置完毕了。
# **5 Python配置**
## **5.1 配置Python环境**
首先下载Python并安装,选择最新的版本即可,整个安装过程按照默认设置来。附上<a href="https://www.python.org/downloads/" target="_blank">下载地址</a>。
接下来检查是否安装成功,打开`powershell`输入`python`后显示如下信息:

这样就表示安装成功了,先输入`import this`欣赏一下美文吧。接着输入`quit()`退出然后输入`pip list`看看有没有`flake8`和`autopep8`。`flake8`是一个python的语法检查工具,比较好用。`autopep8`是一个代码美化工具,也比较好用。我们需要安装它们。没有`flake8`和`autopep8`的话就输入`pip install flake8`和`pip install autopep8`来安装它们。
## **5.2 settings.json配置**
配置如下:
```json
"python.linting.flake8Enabled": true,
"python.formatting.provider": "autopep8",
"python.linting.flake8Args": [
"--max-line-length=248"
],
"python.linting.pylintEnabled": false,
"code-runner.executorMap":{
"python": "python -u",
}
```
做完这一步就配置完毕了。
# **6 番外1-Competitive Programming插件和Competitive Campanion插件混合食用指南**
配置步骤:
1. 安装好Competitive Programming插件和Competitive Campanion插件。
2. 按照**3.2**提到的重要设置,以自己的喜好来配置。
3. 打开谷歌浏览器(火狐类似),点击右上角的`自定义及控制 Google Chrome`,然后寻找`更多工具->扩展程序`选项打开扩展程序界面,点击Competitive Campanion插件的`详细信息->扩展程序选项`,在Custom ports下面的输入框填上任意未占用端口(例如8080),这样就完成了设置。
使用步骤:
1. 打开vscode,任选一个文件夹打开。
2. 在谷歌浏览器里打开任一插件所包含的算法竞赛网站的题目界面,点击右上角插件的加号。
3. 这时候你会发现vscode文件夹里多出了一个文件,并且已拉取到数据。
# **7 番外2-如何使用gdb在vscode里进行C/C++调试**
## **7.1 settings.json配置**
要使用**gdb**对用C/C++生成的程序进行调试,需要在编译的时候加上[-g]参数,此外运行程序也要用gdb来运行程序。配置如下:
```json
"code-runner.executorMap":{
"c": "cd $dir ; gcc $fileName -o $fileNameWithoutExt -g ; gdb $fileNameWithoutExt",
"cpp": "cd $dir ; g++ $fileName -o $fileNameWithoutExt -g; gdb $fileNameWithoutExt",
},
```
## **7.2 使用(内部指令)**
gdb有如下的内部指令:
|指令|描述|
|:-:|:-:|
|`r`/`run`/`run [参数]`|运行程序|
| `kill`|终止程序|
| `b [行号]`|在某行设置断点|
| `b [函数名]`|在函数处设置断点|
| `b [行号/函数名] [条件(if+表达式)]`|当某个条件成立时,在某行/函数处设置断点|
|`clear [行号/函数名]`|清除断点|
|`c`/`continue`|继续运行程序 (在停止之后,例如在一个断点之后)|
|`next`|单步执行 (在停止之后),跳过函数调用|
|`step`|单步执行 (在停止之后),进入函数调用|
|`display [变量名]`|在断点的停止的地方,显示指定的表达式的值。(显示变量)|
|`undisplay [变量名]`|删除一个display设置的变量显示|
|`make [文件名]`|不退出gdb重新生成可执行文件(代码变更时)|
|`quit`|退出gdb|
**注意:[变量名]可能存在多个相同的变量名(不同的函数),这时候要在变量名前面加上(\'函数名\'::)。**
---
想了解更多的信息可以自助查询<a href="https://code.visualstudio.com/docs" target="_blank">官方文档</a>。
感谢浏览😝!
此文章可能会在后续更新,欢迎纠错。

N2-配置一个适合算法竞赛的vscode