VSCode 使用技巧

常用快捷键

资源管理器与源代码管理的忽略

VSCode Snippets

VSCode 键绑定

VSCode 如何调试

!!! warning - 编译的时候看的是当前工作区一级文件夹下的 .vscode 文件夹中的内容,而不是当前编译文件所在的文件夹下的 .vscode - 我因为工作区的组织架构用到了工作区内二级目录,所以这个问题困扰了我很久,仍未解决。 - 目前的办法是另外新建了一个工作区,在这个工作区内把各个语言的编译配置文件都放在一级目录下

VSCode python 文件的调试

Visual Studio 使用技巧

该说不说,要不是看重 VS 的大型工程适配能力,真的不想用,太笨重且不习惯了。下面的一切都以 VS2022 为准。

编码问题

左上角菜单 文件 -> 高级保存选项 可以选择。VS 默认 GB2312,且不支持不带 BOM 的 UTF-8 编码,导致用 VS 打开后的文件到 VSCode 里乱码了(我算是知道收到别人代码那么多非 UTF8 的都是哪来的了)。推荐一个插件 Force UTF-8 (No BOM) 2022,下来之后不用设置直接起效(现在新建的文件都会默认保存为 UTF-8 编码,但是已有的则不会改变)。可以再装个 FileEncoding 插件用来显示文件编码格式。

或者通过 .editorconfig 文件进行配置:

[*] # a mask, means for all files, can be changed to (e.g.) [*.{h,cpp}]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4

然后问题完全解决了吗?并没有,啥必 VS 未按 UTF-8 格式进行编译,非得按它那 UTF8 (with BOM) 或者 GBK 编译。对于这个问题,我们只能在编译命令行里加 utf8 参数,要么通过 cmake,要么通过每个项目的设置(真尼玛服了),详见 VS 修改 c++ 项目编码为 utf-8 及报错

为了改成 UTF-8 真是煞费苦心。。。其实 UTF-8 with BOM 也不是不行吧(

使用下来发现,即使用上了以上所有方法,加载文件的时候总是会跳出来用 GB2312 打开并发生错误,真是他妈的服了,不管怎么改都惦记着它那脑瘫 GB2312。啥必 VS!啥必 VS!啥必 VS!

窗口问题

VS 不支持 VSCode 这样展开合并的窗口,要么浮动,要么停靠(意味着不能合拢),要么就是自动隐藏(意味着展开后不能占位),真是烂完了,目前没找到办法优化。

不过这个固定按钮倒是可以起到一定的作用,启用可以停靠,取消可以自动隐藏,只是相比 VSCode 还是差了点。

一些实用的插件

Resharper, Transparency Theme With Resharper, Open In Visual Studio Code, File Icons, ClaudiaIDE, Output Window filter, Switch Startup Project 2022, Tweaks 2022, Viasfora

Viasfora 插件能让括号颜色更好看(配对更清楚),但有个很坑的一点是长按 ctrl 会把当前指针所在 scope 高亮(当时定位了老半天)。ctrl 键有多实用不必多说,这个东西会导致时不时冒出一个颜色块来,很丑很烦。

文本编辑器

快捷键问题

VS 的快捷键设置真是笨重得像屎一样,搜索、设置都得搞半天。即使指定 VSCode 样式也跟 VSCode 的快捷键有很多不同,太脑残了。这个没什么办法,慢慢设置吧。

可见空格

编辑 -> 高级 -> 查看空白,可以设置空格、制表符、换行符等的显示方式。

如果空格颜色太淡怎么办?工具 -> 选项 -> 环境 -> 字体和颜色,找到 可见空白 设置颜色(个人使用灰色,也可以自定义)。

调试与构建

调试停止时自动关闭控制台

工具 -> 选项 -> 调试 -> 调试停止时自动关闭控制台。我在 VS 里找半天都没找到办法直接在 native 的 powershell 里起任务(像 VSCode 那样),只能新起一个 cmd 窗口,或者通过每个项目的 配置属性 -> 链接器 -> 系统 -> 子系统 以及 配置属性 -> 链接器 -> 高级 -> 入口点 配置直接启动窗口(但没法看到程序输出了)。因此只能退而求其次能否每次关闭程序时自动退出 cmd(但有时不太合适,因为还需要看退出时的输出信息……)。

再见 VS,以后只会把你当做大型项目的编译器,不会拿你当编辑器了,拜拜了您嘞