
令人惊讶的是,到目前为止,在Habré上,对于使用C / C ++编写的人来说,没有很好的Visual Studio Code插件选择。 Microsoft在其博客中仅发布
了一篇文章 ,其中非常基本地介绍了设置说明。 但是大多数Habr读者,特别是来自开发人员的Habr读者,都将没有如此详细的说明。 Web开发人员只有少数几个集合,而C ++没有。
这可能是由于大多数C ++开发人员都使用重量级IDE,当然主要是Visual Studio。
但是,在具有成熟IDE的Linux和MacOS中,一切都不是那么简单,并且并不总是需要困难的开发环境,或者只是不想使用它。
我想提请您注意使生活和工作更轻松的有用插件,并谈论您可能会错过的有用的VS Code设置和功能。
考虑使用VS Code IDE或仅使用代码编辑器的问题是非常全面的,而不是本文的目的。 我仍然会认为它是一个IDE,因为它不费吹灰之力就提供了基本的IDE脚本,例如自动完成和调试。
一点历史
我最初作为开发人员使用的第一个IDE已经是历史悠久的Borland C ++ 2.0。 然后,我移到了Visual Studio 6.0,并且仍然(并且仍然是)这个IDE的忠实拥护者。 但是到了某个时候,有必要在Linux下编写(大概是2006年)。 起初,在Linux上,我对缺少认真的IDE感到震惊-我尝试了Eclipse,遭受了痛苦和吐口水。 我不会再谈历史了,但是最后我弄清楚了Make,CMake,学会了如何快速编写适当的文件,然后是链接程序脚本,gdb,kdb和许多其他有趣的东西。 这时候,我喜欢并积极使用vim五年了,此后我逐渐切换到Sublime Text,然后又切换到第二版,现在又切换到第三版了。
现在,我编写的代码更少了,更多地参与了产品和过程的开发,但是仍然需要定期编写-这些是个人项目,可以帮助我们的合作伙伴嵌入我们的SDK。
而且,由于SDK不仅适用于Windows,而且适用于Linux和MacOS,因此必须在其中编写代码。 去年,我尝试了VS Code,对我来说,它成为Sublime Text的不错选择。
简要比较一下它们,然后以我个人的观点,Sublime Text提供了更多的设置和工作选项,但是VS Code提供了更多现成的方法。 而且,如果您手头没有Sublime Text扩展名的个人选择,或者根本没有使用过此编辑器,那么Visual Studio Code就是一件好事。
我将从一些非常有用的扩展开始。 对于VS Code中的C \ C ++开发人员来说,其中没有多少,主要的当然是:
C / C ++ for Visual Studio代码
市场链接
这是支持由Microsoft开发的VS Code中的C \ C ++的主要扩展。 它所提供的所有内容的详细描述在市场上的页面上,但是在这里我仅提及最重要的内容(当然,我认为):
- 代码格式化(使用clang格式)
- 自动完成
- 通过代码搜索字符
- 转到定义/声明(包括窥视)
- 类/方法导航
- 签名帮助
- 快速信息(悬停)
- 错误曲线
对Windows(PDB,MinGW / Cygwin),Linux和macOS应用程序的调试支持
Microsoft有关扩展及其功能的精美图片的主要文章是此处的
链接 。
应当指出,Microsoft是非常好的伙伴,并且会不断更新此扩展。 而且,此扩展的新功能仅在Microsoft的开发博客上发布,并且不太引人注意。 因此,我决定在这里告诉他们最新的消息。
IntelliSense的全局设置
在2018年5月,VS Code增加了在用户settings.json中为IntelliSense设置任何参数的功能。 这些设置将自动应用于所有项目。
当您处理的大多数项目使用一组通用的include,相同的编译器等时,这是非常有用的。

嵌入式终端支持调试
在2018年12月,Microsoft增加了在内置终端中调试C / C ++应用程序的功能,而不是使用终端打开单独的窗口。 此功能由launch.json中的externalConsole参数控制。

到目前为止,仅支持cppdbg,并且仅在Linux和Windows上受支持,但是在MacOS上,他们还承诺将尽快提供它。 看起来像这样:

文档注释
这个东西是从字面上添加的。 这里真的没有什么可说的,因此仅举Microsoft为例。
我们编写一个简单的Box类,并以标准格式添加注释:

注释与类或类成员的函数相关联,并在悬停在相应对象上时显示在工具提示中。
看起来像这样:

使用容器
在2月6日的最新更新中,Microsoft在Docker容器中添加了C ++的工作。 现在,您不仅可以在容器中收集代码,还可以在容器中对其进行调试。 详细信息
在Microsoft博客上 。
我自己不使用容器进行工作-不需要。 但是可以肯定的是,这对许多人都将是有用的,因此我决定将其包括在本文中。
好了,现在回到VS Code的其他扩展,这将对您的开发有所帮助。
查询
市场链接VS Code中C / C ++ / Objective-C开发人员的另一个相当全球化的插件。 主要功能-该扩展程序是在大型项目(例如Chromium)上设计和测试的。 因此,在Microsoft的标准扩展及其IntelliSense通过的情况下(当您拥有超过100MB的C ++源时,通常会发生这种情况)很有用。
所有主要功能的列表如下:
一开始我想翻译这份清单,但是后来我意识到大多数概念都没有漂亮的普遍接受的译文,因此我决定保留原样。 单击链接以获取更详细的描述和特定功能的演示。
该扩展非常有用,但是自2018年11月以来,github上没有任何活动。 从问题来看-
这个项目死了吗? #867项目真的停止了开发。 该横幅是由
https://github.com/MaskRay/ccls叉子拾取的,但我尚未对其进行测试,因此不推荐使用。 随着时间的推移,最有可能的ccl将仅替换cquery。
Easy C ++项目
市场链接如果前面的两个扩展是具有许多功能的全局扩展,那么它将执行一个简单的功能-为MSVC,GCC或Clang创建一个简单的项目。
附加功能:
- 为项目创建一个示例makefile
- 创建VS Code配置以构建和运行
- 创建用于调试的VS Code配置(由Visual Studio Debugger,GDB和LLDB支持)
- 从一小部分模板生成新类
对于初学者和经验丰富的开发人员都非常有用。 当您需要快速检查某些内容时,将有助于抛出一个简单的Helloworld项目。
它是这样的:

CMake工具
市场链接顾名思义,该扩展增加了对CMake的支持。 正如评论中所建议的那样,您当然可以手动规定所有内容,但有了扩展名,它将更加方便。
安装后,您将需要进行最低配置。 选择工具链:

然后选择程序集的配置:

仅此而已。 你可以工作
该扩展还知道如何为项目生成简单的CMake文件。
渡渡鸟树
市场链接有几个扩展可以为VS Code创建TODO列表。 您可以选择任何一个。 我最喜欢它。 唯一的缺点是它需要
https://github.com/BurntSushi/ripgrep ,它并不总是开箱即用,放置起来也不是很方便。 它尚未出现在标准Debian存储库中。
工作结果如下:

吉特伦斯
市场链接正如扩展名一样,它改进了git的工作。 应该注意的是,默认情况下,VS Code已经对git提供了一些支持,但是非常有限。
GitLens的主要功能是直接在编辑行中显示上次更改的人员和提交内容。 该扩展程序还添加了对文件历史记录的高级搜索,对提交的搜索,用于比较文件的多个版本的便捷视图等。 为了演示这项工作,我只需要在市场页面上插入gif即可,其中清楚地显示了扩展选项。

git历史
市场链接另一个改进了git工作的扩展,即历史记录的显示。 为什么在GitLens中,我无法在所有分支机构中找到合适的项目历史显示。 如果有人知道如何使用GitLens做出类似的观点(请参见下文),请务必在评论中写下来,我将不胜感激。

vscode图标
市场链接将文件和目录图标添加到“资源管理器”面板的众多扩展之一。 市场上有很多扩展,这是最受欢迎的。 随意选择其他任何图标,我喜欢这些图标。

设置同步
市场链接另一个有用的扩展,其用途从名称中显而易见。
要同步您的设置,请使用GitHub帐户令牌和Gist。 就我个人而言,这是最有用的扩展之一,因为我同时使用Windows,Linux和Mac。
代码拼写检查器
市场链接如果您的英语仍然不太理想,或者您想避免输入错误,那么此扩展名绝对不会多余。 如有必要,您可以添加对
俄语的支持。
不错的功能-不仅强调错误的单词,还提供正确的选项。

若时
市场链接
WakaTime是一项服务,可为您的编程显示精美的统计信息\图形\指标。 这东西非常美,但我真的很喜欢。 因此,该扩展在VSCode中工作时增加了对该服务的支持。 您可以在
此处了解有关该服务的
信息 。
漂亮图形的例子:

该服务的主要功能是免费的,不需要订阅。
这就是扩展。 我还想分享一些VS Code本身的有用设置,这可能对社区有用。
一些有用的设置
默认情况下,VSCode崩溃时发送遥测信息,以及Microsoft中的一些数据和错误信息。 如果出于某种原因这不适合您,请安全地关闭设置:
我还建议大家启用自动保存文件。 这个东西是平庸的,但是很难否认它的用处。 我已经被救了不止一次。 由于某种原因,默认情况下它是关闭的。
以下设置包括代码中不可打印字符的显示。 我个人认为,这是一件非常有用的事情,它使您可以立即注意到下一个项目中的文件是使用制表符而不是空格进行格式化的。 通常,它将使您注意到不应该出现的多余字符。
对于喜欢平滑滚动的任何人:
在调试过程中直接在代码中显示变量。 另一个非常有用的东西,由于某种原因将其关闭。 最有眼力的人可能已经在以前的屏幕快照之一中注意到了此设置的工作方式示例,但以防万一,我将再应用一个

我只有在写文章时才发现以下设置。 ZenMode允许您隐藏所有不必要的窗口和菜单,并仅保留当前代码文件。 现在,当我不得不尝试代码中的某些内容时,我将在平板电脑上不断使用它。 在平板电脑上,通常不需要其余的窗口,并且没有足够的可用空间。 我推荐!
聚苯乙烯
如果有人想分享他们对VS Code的有趣扩展或关注有用的设置-欢迎在评论中。 我很高兴对这篇文章进行补充,使其更加有用。