【技术文章】从 Dev C++ 到 Vscode

· · 科技·工程

从 Dev C++ 到 Vscode

保姆级教程!

目录

  1. 概述
  2. 去哪里搞到 Vscode ?
  3. 我的中文呢?!还有 C++ 语言支持去哪里了?!
  4. 编译功能去哪里了?!
  5. 我的 “请按任意键继续” 以及运行时间统计去哪里了?!
  6. 直接运行功能去哪里了?!
  7. 我的各种主题设置还有缺省源去哪里了?!
  8. 【拓展】你说可以多语言代码编辑,去哪里了?!还有我的 Markdown 呢?

注:本教程假定你已经习惯了使用 Dev C++,并且你的操作系统为 Windows。

概述

“我用 Dev C++ 用得好好的,为什么要换成 Vscode 呢?”

你说得对,但是听我慢慢讲。

为什么选择 Vscode(Visual Studio Code)

主要有以下这几点:

  1. 跨平台支持:Vscode 可以在 Windows、Mac 和 Linux 上运行可以在多个操作系统上使用。
  2. 丰富的插件生态系统:Vscode 有大量的插件可供选择,无论是您需要的任何语言支持、调试工具、测试框架还是自动化工具,都可以从 Vscode 扩展商店中找到。
  3. 轻量级但功能强大:Vscode 相对于其他一些 IDE(例如 PyCharm、WebStorm)来说更加轻量级,启动速度更快,对系统资源的要求更低。同时,它也提供了很多必要的功能,例如代码提示、语法高亮、自动完成等。
  4. 自定义程度高:Vscode 的配置非常灵活,您可以根据自己的需要调整编辑器设置、快捷键、主题等。如果您不喜欢某个插件,也可以轻松地禁用或删除它。
  5. 免费或低成本:Vscode 是开源的,并且可以免费使用。如果您需要一些额外的功能或插件,可以选择从扩展商店中下载安装,或者直接为开源项目贡献代码以获得更多功能。
  6. 远程开发:Vscode 提供远程开发功能,可以自如的在任何地方编辑你的程序。

省流:远程开发、跨平台、灵活、拓展插件。

超级省流:好用,迁移成本低

“好好好,就用 Vscode,但是我要从 Dev C++ 迁移过来太麻烦了!”

并不麻烦,接下来我就来讲讲怎么迁移。

STEP 1 去哪里搞到 Vscode ?

好问题,接下来教你怎么下载。

首先访问 Vscode 官网的下载界面:Download Visual Studio Code - Mac, Linux, Windows

随后找到你所对应的系统,下载!安装!然后就没了。

”我没有管理员权限,安装不了!“

非常简单,下载 zip 版本就可以了,这就是所谓的绿色版。

STEP 2 我的中文呢?!还有 C++ 语言支持去哪里了?!

别着急,我们先解决中文的问题。

点击标红的”扩展“按钮。

然后进去搜索 ”Chinese“

安装第一个即可。

然后就是 C++。

同样是点击”扩展“按钮。

然后依次安装如下插件:

  1. C++ Extension Pack
  2. Code Runner
  3. Competitive Programming Helper (cph)
  4. One Dark Pro
  5. vscode-icons
  6. Fluent Icons
  7. Prettier
  8. C/C++ Compile Run(upd on 2024/2/15:注意!一定要安装 1.0.50 版本的!最新的版本弹出窗口运行会有问题!)

然后重启 Vscode,搞定!

STEP 3 编译功能去哪里了?!

你先别急。

刚刚不是安装了一个 C / C++ Compile Run 吗。

我们给他稍稍配置一下:

首先,在你写代码的文件夹里新建一个 .vscode 文件夹。

然后在 .vscode 文件夹中新建一个 settings.json 文件

然后把下面的直接粘贴上去(可根据自己的需求更改)

{
    "c-cpp-compile-run.save-before-compile": true,
    "c-cpp-compile-run.run-in-external-terminal": true,
    "c-cpp-compile-run.cpp-flags": "-std=c++14 -Wall -Wextra -lm -O2 -fno-ms-extensions -finput-charset=UTF-8 -fexec-charset=GBK", /*此处可更改为自己的编译选项*/
    "c-cpp-compile-run.output-location": "."
}

然后编译!等等,怎么出错了?

(笔者注:就算您下载了 Dev C++,有其内置的编译器,也强烈建议您按照下述步骤下载最新版本的编译器,因为 CCF 规定的 C++ 版本为 C++14,而 Dev C++ 内置的编译器最多支持到 C++11 和少量 C++14)

出错的原因是没有找到编译器,去 https://winlibs.com/ 下载即可,下载好后解压到合适位置,并把解压后的 bin 文件夹添加到环境变量。

upd on 2024 / 2 / 15:貌似即使添加了环境变量,Vscode 依然会自动使用 Dev C++ 的内置编译器,需要在 settings.json 中添加一行,添加完后长这样:

{
    "c-cpp-compile-run.save-before-compile": true,
    "c-cpp-compile-run.run-in-external-terminal": true,
    "c-cpp-compile-run.cpp-flags": "-std=c++14 -Wall -Wextra -lm -O2 -fno-ms-extensions -finput-charset=UTF-8 -fexec-charset=GBK",
    "c-cpp-compile-run.output-location": ".",
    "c-cpp-compile-run.cpp-compiler": "[path]/bin/g++.exe"
}

[path] 代表解压后的路径。

怎么添加环境变量?

  1. 在电脑桌面上找到“此电脑”或者“计算机”的图标,右键单击该图标,选择“属性”。
  2. 在打开的窗口的左侧,点击“高级系统设置”。
  3. 在弹出的系统属性对话框中,切换到“高级”标签,然后点击“环境变量”按钮。
  4. 在环境变量对话框中,可以看到两组变量,一组是用户变量,另一组是系统变量。如果只想为自己的用户账户添加路径,可以编辑用户变量;如果希望为整个系统添加路径,可以编辑系统变量。
  5. 点击对应变量的“路径”一行,然后点击“编辑”按钮。
  6. 在编辑环境变量对话框中,会看到当前在 PATH 变量中的所有路径列表。
  7. 要添加新的路径,可以点击列表底部的“新建”按钮,然后在弹出的对话框中输入或者复制粘贴路径。如果想浏览到特定路径,可以点击“浏览”按钮,然后在打开的文件浏览器中导航到所需路径。
  8. 要编辑任何路径,只需选择它,然后点击“编辑”按钮。如果不想要某个路径,可以选中它然后点击“删除”按钮。注意还可以在列表中上下移动项目。
  9. 完成上述操作后,需要点击“确定”按钮保存修改。在弹出的确认对话框中,再次点击“确定”按钮关闭窗口。

下载太慢了!

  1. 首先复制下载链接,找到位于最后面的文件名。

    如:https://github.com/brechtsanders/winlibs_mingw/releases/download/13.2.0mcf-16.0.6-11.0.1-ucrt-r2/winlibs-x86_64-mcf-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.1-r2.zip

    那么他的文件名就是 winlibs-x86_64-mcf-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.1-r2.zip。

  2. 然后然后进到 https://kkgithub.com/brechtsanders/winlibs_mingw/releases/

    Ctrl + F 搜索文件名。

    没搜索到?点击 Show all XXX assets(XXX 为数字),然后按下回车。

    如果你要的版本比较后,那就往下滑,一直按,直到找到为止。

    然后在里面点击文件名下载即可。

STEP 4 我的 “请按任意键继续” 以及运行时间统计去哪里了?!

我知道你很急,但你先别急。

找到你的用户目录(C:\Users\【用户名】,其中【用户名】代表你的用户名),接着依次访问 .vscode\extensions\

接着搜索 danielpinto8zz6.c-cpp-compile-run

点进去搜索出来的第一个文件夹,再点进去 dist 文件夹,

找到 extension.js 文件,拖进去 Vscode 里面。

然后按下 Shift + Alt + G,对代码进行格式化。

然后保存。接着跳转到第 2806 行。

将红框内的内容全部删掉。

改为:

start cmd /c "cd ${t} & consolepauser ${e.replace('"',"")}"

保存,重启!

然后,如果你有 Dev C++:

  1. 在电脑系统中,找到”Dev C++“快捷方式。
  2. 右键点击快捷方式。快捷方式上出现一个菜单。
  3. 在右键菜单中,点击“属性”按钮。
  4. 在属性的页面,点击“快捷方式”按钮。
  5. 点击“快捷方式”按钮后,进入快捷方式页面。
  6. 在快捷方式的页面,点击“打开文件的位置”按钮。
  7. 进入后,找到一个叫做 ”ConsolePauser.exe“ 的文件
  8. 将其复制到你编译器目录下的 bin 文件夹
  9. 搞定!

”这是新电脑,我是不是还要再安装一个 Dev C++?“

Of course not.

我这里提供一个 Dev C++ 5.11 版本的 ConsolePauser:

https://www.luogu.com.cn/problem/U360709

下载后按照上述的 7-9 步操作即可。

然后你就可以快乐地打代码,编译啦~

STEP 5 直接运行功能去哪里了?!

非常简单。

在配置文件(settings.json)中添加这几行:

"code-runner.executorMap": {
    "c": "start consolePauser.exe ./$fileNameWithoutExt",
    "cpp": "start consolePauser.exe ./$fileNameWithoutExt"
},
"code-runner.fileDirectoryAsCwd": true,
"code-runner.ignoreSelection": true,
"code-runner.runInTerminal": true

此时你的配置文件大概长这个样子:

{
    "c-cpp-compile-run.save-before-compile": true,
    "c-cpp-compile-run.run-in-external-terminal": true,
    "c-cpp-compile-run.cpp-flags": "-std=c++14 -Wall -Wextra -lm -O2 -fno-ms-extensions -finput-charset=UTF-8 -fexec-charset=GBK", /*此处可更改为自己的编译选项*/
    "c-cpp-compile-run.output-location": ".",
    "code-runner.executorMap": {
        "c": "start consolePauser.exe ./$fileNameWithoutExt",
        "cpp": "start consolePauser.exe ./$fileNameWithoutExt"
    },
    "code-runner.fileDirectoryAsCwd": true,
    "code-runner.ignoreSelection": true,
    "code-runner.runInTerminal": true
}

然后,编译完之后,你就可以按下 Ctrl + Alt + N 直接运行啦。

STEP 6 我的各种主题设置还有缺省源去哪里了?!

这个就有点麻烦,不过别急。

我们先来解决缺省源的问题。

首先把你的缺省源写进去一个 C++ 文件里。

接着下载一个程序:

https://pan.huang1111.cn/s/LMM8S6,密码:lgnb

软件保证无毒,源码在 https://www.luogu.com.cn/paste/h9bgcuhw,使用 Python 编写,Pyinstaller 打包。

随后运行,按照程序的提示进行操作。

然后 Ctrl + A 选中所有 output.txt 中的内容,复制,然后按照如下步骤进行:

  1. 打开VScode,点击左下角的齿轮图标,选择“用户代码片段”。
  2. 在用户代码片段的配置文件中,选择“cpp.json”。
  3. 在“cpp.json”文件中,粘贴刚刚复制的内容。
  4. 保存并关闭“cpp.json”文件。此时,在新文件中输入你的触发词,再按下回车,就会出现刚才定义的代码片段。

接着我们来搞一搞主题设置。

这里给一个推荐的配置文件,含注释,其他的可以自行百度或者问我也行。

{
    //针对编辑 JSON 的格式化设置。
    "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
    "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
    //Clang Format 默认格式化配置,如果不懂可以不管
    "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: webkit, AccessModifierOffset: -4, AlwaysBreakTemplateDeclarations: true, AllowShortBlocksOnASingleLine: true, AllowShortCaseLabelsOnASingleLine: true, AllowShortEnumsOnASingleLine: true, AllowShortFunctionsOnASingleLine: true, AllowShortIfStatementsOnASingleLine: AllIfsAndElse, AllowShortLambdasOnASingleLine: All, AllowShortLoopsOnASingleLine: true, ColumnLimit: 100, FixNamespaceComments: false, IndentWidth: 4, TabWidth: 4, UseTab: Never }",
    //intellicode 设置
    "C_Cpp.intelliSenseEngine": "default", //默认引擎
    //Code Runner 直接运行代码的配置,上文讲过
    "code-runner.executorMap": {
        "c": "start consolePauser.exe ./$fileNameWithoutExt",
        "cpp": "start consolePauser.exe ./$fileNameWithoutExt"
    },
    "code-runner.fileDirectoryAsCwd": true, //Code Runner 设置是否通过切换目录来执行程序,如果做OI的话可以不管。
    "code-runner.ignoreSelection": true, //是否忽略部分执行,这个做OI不用管
    "code-runner.runInTerminal": true, //是否单独开一个控制台窗口,看个人喜好
    //内部控制台窗口字体。
    //下方配置需要安装两个字体
    //Fira Code,链接:https://githubfast.com/tonsky/FiraCode/releases,解压后安装 ttf 下的所有字体。
    //Source Han Sans,链接:https://githubfast.com/adobe-fonts/source-han-sans/releases,下载 Region Specific Subset OTFs Simplified Chinese 这个版本。解压后安装 SubsetOTF/CN 下的所有字体。
    //如果不喜欢可以自己换,格式"'字体名称1', '字体名称2', '字体名称3'",以此类推
    "debug.console.fontFamily": "'Fira Code', 'Source Han Sans SC'",
    "editor.bracketPairColorization.enabled": false,
    "editor.codeLensFontFamily": "'Fira Code', 'Source Han Sans SC'",
    //光标闪烁方式,该选项有以下几个可选值:
    //"blink":光标将以块状的方式闪烁。
    //"smooth":光标将以平滑的方式闪烁。
    //"phase":光标将以平滑的方式闪烁,并且在字符之间的空白处还会显示一个额外的光标,以帮助用户更好地定位光标位置。
    //"expand":光标将以一个逐渐扩大的圆圈表示,以帮助用户更好地看到光标的位置。
    //"solid":光标将一直显示为实心,不会闪烁也不会移动。
    "editor.cursorBlinking": "phase",  
    //光标动画效果设置,on 将会显示平滑的动画效果。  
    "editor.cursorSmoothCaretAnimation": "on",  
    //光标的样式,该选项有以下几个可选值:
    //"line":光标将显示为一条细线,通常用于插入模式。
    //"block":光标将显示为一个方块,通常用于命令模式。
    //"underline":光标将显示为一条下划线,通常用于选择模式。
    "editor.cursorStyle": "line",
    //编辑器字体设置,参考 debug.console.fontFamily
    "editor.fontFamily": "'Fira Code', 'Source Han Sans SC'",
    //是否启用字形连字,on 启用,off 不启用
    //字形连字是指将两个或多个相邻的字符组合成一个单一的字符形状,以节省空间和增加文本的可读性。在某些字体中,例如 Fira Code,可以启用字形连字来增强编辑器的显示效果。
    "editor.fontLigatures": true,
    //字体宽度
    "editor.fontWeight": "500",
    //以下是缩略图设置,可以不管
    "editor.minimap.maxColumn": 30,
    "editor.minimap.renderCharacters": false,
    "editor.minimap.scale": 3,
    //空白字符上显示符号的方式,该选项可以设置为以下值:
    //"none":不显示空白字符上的符号。
    //"boundary":除了单个空格,在空白字符上显示符号。
    //"all":在所有空白字符上显示符号。
    "editor.renderWhitespace": "boundary",
    //自动换行
    //该选项可以设置为以下值:
    //"off":关闭自动换行功能。
    //"on":启用自动换行功能,将在视区宽度处换行。
    //"wordWrapColumn":启用自动换行功能,将在 editor.wordWrapColumn 处折行。
    //"bounded":启用自动换行功能,将在视区宽度和 editor.wordWrapColumn 中的较小值处折行。
    //要在 VSCode 中设置自动换行,可以将 editor.wordWrap 的值设置为 "on"。如果需要进一步控制换行的位置,可以设置 editor.wordWrapColumn 的值。例如,如果将该值设置为 80,则文本将在达到 80 个字符宽度时自动换行。
    "editor.wordWrap": "on",
    //删除前是否确认
    "explorer.confirmDelete": false,
    //拖拽前是否确认
    "explorer.confirmDragAndDrop": false,
    //文件排序方式
    "explorer.sortOrder": "type",
    //各类文件的类型,可以不管
    "files.associations": {
        "*.in": "plaintext",
        "*.out": "plaintext",
        "*.ans": "plaintext",
        "iostream": "cpp",
        "bit": "cpp",
        "*.tcc": "cpp",
        "deque": "cpp",
        "string": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "iomanip": "cpp",
        "typeinfo": "cpp",
        "cstring": "cpp",
        "ostream": "cpp",
        "cstdio": "cpp"
    },
    //是否自动判断编码
    "files.autoGuessEncoding": true,
    //Markdown Preview 字体,见拓展内容
    "markdown.preview.fontFamily": "'Fira Code', 'Source Han Sans SC'",
    //是否在搜索中跟踪符号链接,可以不管
    "search.followSymlinks": false,
    //默认控制台,该选项可以设置为以下值:
    //"Command Prompt":使用 Windows 命令提示符作为默认终端配置文件。
    //"PowerShell":使用 PowerShell 作为默认终端配置文件。
    //"Git Bash":使用 Git Bash 作为默认终端配置文件。
    //"Cygwin":使用 Cygwin 作为默认终端配置文件。
    //MinGW-w64":使用 MinGW-w64 作为默认终端配置文件。
    //"ConEmu":使用 ConEmu 作为默认终端配置文件。
    "terminal.integrated.defaultProfile.windows": "Command Prompt",
    //多行粘贴警告,"never" 禁用,建议禁用不然很烦。
    "terminal.integrated.enableMultiLinePasteWarning": "never",
    //终端默认字体,参考 debug.console.fontFamily
    "terminal.integrated.fontFamily": "'Fira Code', 'Source Han Sans SC'",
    //终端字母之间的间距
    "terminal.integrated.letterSpacing": 1,
    //右键终端时的动作
    "terminal.integrated.rightClickBehavior": "default",
    //缩放级别
    "window.zoomLevel": 0,
    //色调设置
    "workbench.colorTheme": "One Dark Pro Mix",
    //固定标签页的大小
    "workbench.editor.pinnedTabSizing": "compact",
    //图标格式
    "workbench.iconTheme": "vscode-icons",
    //生产图标格式
    "workbench.productIconTheme": "fluent-icons",
    //树形结构缩进格数
    /*
    如果你设定这个值为20,那么在VSCode的文件浏览器(Explorer)或者项目浏览器(Project)中,每一个缩进级别就会占据20像素的宽度。
    这个设置可以用来调整你的代码或者其他树形结构的显示方式,帮助你更好地阅读和理解代码的结构。你可以根据自己的需要来调整这个值。例如,如果你的屏幕分辨率很高,或者你习惯于较宽的缩进,你可能会设定一个较大的值。相反,如果你的屏幕分辨率较低,或者你喜欢较窄的缩进,你可能会设定一个较小的值。
    注意:这个设置只对树形结构的视图有影响,不会改变你的代码本身。例如,如果你在一个文本编辑器中打开一个文件并编辑代码,这个设置不会影响你的代码的缩进。它只影响VSCode的文件浏览器或项目浏览器如何显示这些文件或项目。*/
    "workbench.tree.indent": 20, 
    //C-Cpp Complie Run 设置
    "c-cpp-compile-run.save-before-compile": true, //编译前保存
    "c-cpp-compile-run.run-in-external-terminal": true, //是否在额外的窗口运行
    "c-cpp-compile-run.cpp-flags": "-std=c++14 -Wall -Wextra -lm -O2 -fno-ms-extensions -finput-charset=UTF-8 -fexec-charset=GBK", //编译选项
    "c-cpp-compile-run.output-location": "." //exe 文件输出目录
}

STEP 7 【拓展】你说可以多语言代码编辑,去哪里了?!还有我的 Markdown 呢?

这个没必要着急。

先来说 Markdown。

安装以下几个插件:

Ctrl + Shift + V 预览。

想要所见即所得的可以看这篇博文。

然后再来说其它的语言。

如果你要的语言是 Javascript,Typescript,Node.js 的话,恭喜你,Vscode 内置支持这些语言。

如果不是的话,可以在扩展搜索你语言的名字,然后安装对应的支持包就可以了。

运行的话,我们安装的 Code Runner 应该能满足大部分语言的需求吧。

也可以在网上搜一搜对应的教程,或者问我,我研究研究(

Summary 总结

终于写完了,历时 4 周。

翻了大量资料,编写真的很不易。

(小插曲:在写完了转换程序的 Python 版后准备打包时发现一堆报错,然后搞搞搞,最后发现是版本的问题,升级一下就好了:()

希望对各位有所帮助,顺便给个关注,点个赞可以喵?

文中部分内容由百度文心一言编写。

参考资料如下:

(很多资料没放出来是因为我删了历史记录,找不到了555)