VSCode配置二三事

自从半年前装了 VS Code (下称 VSC ) 以后,只用 VSC 来写一些yml,json,html啥的。从来没有用过来写cpp

这几天突然心血来潮,在家里配置了一下 VSC ,现在可以在家使用 VSC 写代码了。

环境准备

首先将MinGW-w64bin的位置加入环境变量里的Path里。我个人由于以前都在用 Dev-C++ 所以直接添加了Dev-C++\Dev-Cpp\MinGW64\bin

添加后就可以在cmd中使用g++ -o test test.cpp之类的命令来编译cpp文件了。

因为要写cpp,故在 VSC 的扩展商店( Extensions )里下载扩展C/C++,这个扩展是官方的C/C++扩展。

然后把User Settings随便改一改就进入正文了。

键盘快捷键

等等忘记说快捷键了。 VSC 的快捷键和 Dev-C++ 的不太一样,所以这里指出一些常用快捷键。

编辑器与窗口管理

  • 打开 Ctrl+O
  • 新窗口 Ctrl+Shift+N
  • 新标签页 Ctrl+N
  • 关闭整个 VSC 窗口 Ctrl+Shift+W
  • 关闭当前标签页 Ctrl+W
  • 重新打开刚刚关闭的标签页 Ctrl+Shift+T
  • 切换标签页 Ctrl+Tab
  • 创建一个新编辑器并将当前页面复制过去 Ctrl+\
  • 在前三个编辑器之间切换 Ctrl+1 2 3
  • 将焦点编辑器移动位置 先按下 Ctrl+K 左下角出现提示后用 ← → 移动 或者可以 Ctrl+Alt+←→
  • 在标签页之间切换 Alt+1~9

代码编辑

  • 搜索 Ctrl+F
  • 替换 Ctrl+H
  • 复制光标所在行 只需Ctrl+C
  • 去掉行尾空格 Ctrl+K 然后 Ctrl+X
  • 切换行注释 Ctrl+/
  • 代码缩进 Ctrl+[Ctrl+]
  • 当前行上下移动 Alt+↑↓
  • 当前行后插入一行 Ctrl+Enter
  • 当前行前插入一行 Ctrl+Shift+Enter
  • 选中下一行 Ctrl+i
  • 撤销光标上次移动 Ctrl+U
  • 选中下个高亮的匹配项 Ctrl+D
  • 多光标模式 Atl+鼠标单击即可在单击处创建新的光标
  • 速览定义 Alt+F12
  • 转到定义 F12
  • Zen模式(一个奇怪的类似全屏的模式) Ctrl+K 然后 Z
  • 打开自动保存 Ctrl+Shift+P之后输入AutoSave,选中,按下回车。
  • 打开终端 Ctrl+~

配置 .json 文件

首先我搞了个文件夹做工作区。

在工作区里新建名为.vscode的文件夹,在里面创建launch.json,tasks.json,settings.json三个.json文件。

launch.json

由于学疏才浅,这个文件(包括下面的其他文件)基本是直接从参考资料里抄的……

个人配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"internalConsoleOptions": "neverOpen",
"MIMode": "gdb",
"miDebuggerPath": "gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile"
}
]
}

tasks.json

个人配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile",
"command": "g++", //本人直接用的 g++ 编译
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe", //这东西必须要加,不然编译出来全是a.exe
"-g",
"-Wall",
// "-static-libgcc",
// "--target=x86_64-w64-mingw",
"-std=c++11", //这里用 g++11 会出现不明错误,原因未知
"-O2",
"-Wl,--stack=67108864",
"-DVSC_Compile",
],
"type": "process",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
}
}
]
}

至今不明白为什么使用std=g++11指令会不明错误。

setting.json

配置了前两个.json文件后已经可以正常F5编译运行工作区的cpp文件了。原因本人未知,或许是因为我用的是g++

但是基本所有教程都有配置此文件,故本人也搞了一个。

个人配置:
1
2
3
4
5
6
7
8
9
10
11
12
{
"files.defaultLanguage": "cpp",
"code-runner.executorMap": {
"c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c11 && $dir$fileNameWithoutExt",
"cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc --target=x86_64-w64-mingw -std=c++11 && $dir$fileNameWithoutExt"
},
"code-runner.saveFileBeforeRun": true,
"code-runner.preserveFocus": true,
"code-runner.clearPreviousOutput": false,
"code-runner.ignoreSelection": true,
"C_Cpp.clang_format_sortIncludes": true
}

其他

因为搞完前三个(其实是前两个)之后已经可以正常编译,compile_flags.txt等文件并未配置。

使用反馈

可能由于是刚开始使用,感觉并没有很方便。

也许用着用着就习惯了?

参考资料及鸣谢

知乎 谭九鼎

洛谷日报 现代编辑器食用指北-VSCode