Visual Studio中的C++代码编辑和导航

原文发地址:https://blogs.msdn.microsoft.com/vcblog/2017/04/20/c-code-editing-and-navigation-in-visual-studio/

作者:Augustin Popa

Visual Studio提供了一套有效的工具,使C++开发人员可以轻松的阅读,编辑和浏览代码。在这篇博文中,我们将深入了解这些功能。并介绍他们的工作。这篇文章是针对Visual Studio的新用户。

这篇文章涉及以下的概念:

  1. 阅读和理解代码

2.  浏览你的代码库

3. 编辑和重构代码

4. 键盘快捷键参考

5. 结论

阅读和理解代码

如果你像大多数开发人员一样,你可能花更多的时间来查看代码而不是修改代码。考虑到这一点,Visual Studio提供了一套功能来帮助您更好地可视化和了解您的项目工程。

基本编辑功能

Visual Studio 自动为您的代码提供语法着色,以区分不同类型的符号。未使用的代码(例如#if 0下的代码)的颜色更加褪色。此外,代码区添加轮廓线,使其易于展开或者折叠。

如果你的代码中有错误,这将导致编译失败,Visual Studio会在问题发生添加红色的波浪线。如果Visual Studio发现您的代码有问题,但这个问题不会导致编译失败。您将看见一个绿色波浪线。您可以在“错误列表”窗口中查看到任何编译器生成的警告或者错误。

如果将光标放在大括号上,“{“或”}”,则Visual Studio会突出显示其匹配的

您可以通过按住Ctrl键和滚动鼠标滚轮或选择左下角的缩放设置,在编辑器重放大或缩小。

“工具”>“选项”菜单是Visual Studio选项的中心位置,可让您配置各种不同的功能。 值得探索的是根据您的独特需求量身定做IDE。

您可以通过转到文本编辑器>所有语言>常规或通过快速启动(Ctrl + Q)搜索“行号”来添加行号。 可以为所有语言或特定语言(包括C ++)设置行号。

快速信息和参数信息

您可以将鼠标悬停在任何变量,函数或其他代码符号上,以获取有关该符号的信息。 对于可以声明的符号,快速信息显示声明。

当你写出一个函数的调用时,调用参数信息来澄清预期的输入参数的类型。 如果您的代码有错误,您可以将鼠标悬停在其上,快速信息将显示错误消息。 您还可以在错误列表窗口中找到错误消息。

此外,“快速信息”还会显示您所在的位置,只要您将鼠标悬停在该符号的定义上方,您可以轻松地查看代码中的文档。

滚动条缩略图模式

Visual Studio将滚动条的概念比大多数应用程序进一步提升。 使用滚动条地图模式,您可以同时滚动浏览文件,而不必离开当前位置,也可以单击栏上的任意位置进行导航。 即使关闭地图模式,滚动条也会突出显示绿色代码(保存的更改)和黄色(对于未保存的更改)所做的更改。 您可以在“工具”>“选项”>“文本编辑器”>“所有语言”>“滚动条”>“使用垂直滚动条的缩略图模式”或通过快速启动(Ctrl + Q)搜索“地图”来打开地图模式。

类视图

有几种可视化代码的方法。一个例子是类视图。您可以从“视图”菜单或按Ctrl+Shift+C打开“类视图”。“类视图”将显示可搜索的所有代码符号及其范围和父/子层次结构的树。并以每个项目为单位进行组织。您可以从“类视图设置”(单击窗口顶部的齿轮箱图标)配置“类视图”显示的类别视图

生成包含文件的图形

要了解文件之间的依赖关系链,请在任何打开的文档中右键单击,然后选择生成包含文件的图形。

您还可以选择保存图表供以后查看。

查看调用层次结构

您可以右键单击任何函数调用以查看其调用层次结构的递归列表(调用它的两个函数以及调用的函数)。列表中的每个功能都可以以相同的方式进行扩展。有关详细信息,请参考调用层次结构.

速览定义

您可以通过右键单击并选择速览定义,或者使用光标在该符号上按Alt + F12,一目了然地查看变量或函数的定义。 这是一个快速的方式来了解更多关于符号,而不必在编辑器中保留当前的位置。

浏览你的代码库

Visual Studio提供了一套工具,可以让您快速有效地浏览您的代码库

打开文档

右键单击代码中的#include指令,然后选择打开文档,或者使用光标在该行上按Ctrl + Shift + G打开相应的文档。

切换标题 / 代码文件

您可以通过在文件中的任意位置右键单击并选择“切换标题/代码文件”或按相应的键盘快捷键:Ctrl + K,Ctrl + O,可以在头文件及其相应的源文件之间切换,反之亦然。 解决方案资源管理器 解决方案资源管理器是您的解决方案中的文件之间管理和导航的主要方式。 您可以通过在解决方案资源管理器中单击导航到任何文件。 默认情况下,文件按其出现的项目分组。要更改此默认视图,请单击窗口顶部的“解决方案和文件夹”按钮以切换到基于文件夹的视图。

转到定义/声明

您可以通过在编辑器中右键单击代码符号来定义,然后选择“转到定义”,或按F12。 您可以从右键单击上下文菜单或按Ctrl + F12类似地导航到声明。 通过编辑器上下文菜单导航到定义或声明。


查找 / 在文件中查找

您可以通过查找(Ctrl + F)或在文件中查找(Ctrl + Shift + F),在解决方案中运行文本搜索。 查找可以范围选择,当前文档,所有打开的文档,当前项目或整个解决方案,并支持正则表达式。 它还会在IDE中自动突出显示所有匹配项。

在文件中查找是一个更为复杂的查找版本,在“查找结果”窗口中显示结果列表。 它可以配置为比Find更远,例如允许您搜索外部代码依赖项,按文件类型过滤等。 您可以在“查找结果”窗口中组织在两个窗口中查找结果或从多个搜索中附加结果。 “查找结果”窗口中的单个条目也可以在不需要时被删除。

查找所有参考

查找所有引用显示所选符号的引用列表。 有关查找所有参考资料的更多信息,请查看我们的博客文章,查找重新设计用于较大搜索的所有参考文献

导航栏 您可以使用编辑器窗口上方的导航栏导航到您的代码库周围的不同符号。

转到

转到(Ctrl + T)是可用于导航到文件,代码符号或行号的代码导航功能。 有关更多信息,请参阅导览到导演导演To Introduction。

快速启动 快速启动可以轻松导航到Visual Studio中的任何窗口,工具或设置。 只需键入Ctrl + Q或单击IDE右上角的搜索框,并搜索您要查找的内容。

编写和重构代码

Visual Studio提供了一套工具来帮助您编辑,编辑和重构代码。

基本编辑器功能

您可以通过选择它们,按住Alt并按向上/向下箭头键轻松地上下移动代码行。 要保存文件,请按IDE顶部的保存按钮,或按Ctrl + S。 一般来说,最好使用全部保存(Ctrl + Shift + S)一次性保存所有更改的文件。

变更追踪

每当您更改文件时,左侧会出现一个黄色条,表示未保存更改。 保存文件时,条形图变成绿色

只要文档在编辑器中打开,绿色和黄色条就被保留。它们代表自您上次打开文档以来所做的更改。

智能感知

IntelliSense是一个功能强大的代码完成工具,可在您键入时为您提供符号和代码段。 Visual Studio中的C ++ IntelliSense实时运行,在更新代码库时分析您的代码库,并根据您键入的符号的字符提供上下文建议。当您输入更多字符时,推荐结果列表将缩小。

IntelliSense如何在Visual Studio中工作  此外,一些符号会自动省略,以帮助您缩小您所需要的。例如,当从类外部访问类对象的成员时,默认情况下,您将无法看到私有成员,或者保护成员(如果您不在子类的上下文中)。 从下拉列表中选出要添加的符号后,您可以使用Tab,Enter或其他提交字符自动完成(默认为{} []()。,:; + - * /%|!?^ = @#\)。

提示:如果要更改可用于完成智能感知建议的字符集,请在快速启动(Ctrl + Q)中搜索“智能感知”,然后选择文本编辑器 - > C / C ++ - >高级选项以打开IntelliSense高级设置页面。从那里,编辑会员列表提交字符与您想要的更改。如果您发现自己不小心提交了您不想要的结果,或者想要一种新的方法,这是您的解决方案。

高级设置页面的IntelliSense部分还提供了许多其他有用的自定义设置。例如,成员列表过滤器模式选项会对您将看到的IntelliSense自动填充建议的种类产生重大影响。默认情况下,它设置为Fuzzy,它使用复杂的算法来查找您键入的字符中的模式并将其与潜在的代码符号相匹配。例如,如果您有一个名为MyAwesomeClass的符号,您可以键入“MAC”,并在自动完成建议中找到该类,尽管省略了许多中间的字符。模糊算法设置代码符号必须满足的最小阈值以显示在列表中。 如果您不喜欢模糊过滤模式,可以将其更改为前缀,智能或无。虽然None不会减少列表,但Smart过滤会显示包含与您输入的字符匹配的子字符串的所有符号。另一方面,前缀过滤纯粹搜索从您键入的字符串开始的字符串。这些设置为您提供了许多选项来定义您的IntelliSense体验,值得尝试,以了解您喜欢的内容。

智能感知不仅仅是建议个别符号。一些IntelliSense建议以代码片段的形式提供,它们提供了代码构造的基本示例。代码段可以通过旁边的方框图标轻松识别。在下面的截图中,“while”是一个代码片段,它在提交时自动创建一个基本的while循环。您可以选择在高级设置页面中切换片段的外观。

Visual Studio 2017提供两种新的IntelliSense功能,可帮助您缩小自动完成建议的总数:Predictive IntelliSense和IntelliSense过滤器。 查看我们的博客文章,C ++ IntelliSense改进 - 预测智能感知和过滤,以了解更多关于这两个功能如何提高您的生产力。 如果您发现自己处于IntelliSense建议的结果列表与您要查找的内容不一致的情况,并且您已经预先键入了一些有效字符,则可以通过单击显示更多结果按钮来选择不清空列表 在下拉列表的左下角 - 看起来像加号(+) - 或按Ctrl + J。这将刷新建议,并添加一些新的条目。 如果您使用Predictive IntelliSense,这是一种可选模式,使用比平常更严格的过滤机制,您可能会发现列表扩展功能更加有用。

快速修复

Visual Studio有时会提出改进或完成代码的方法。 这是一些叫做快速修复的灯泡弹出窗口的形式。 例如,如果您在头文件中声明一个类,Visual Studio将建议它可以在单独的.cpp文件中声明一个定义。

重构特征

你有一个你不满意的代码库吗?你发现自己需要做一些彻底的变化,但是害怕打破你的建设,或者觉得这将需要太长时间?这是Visual Studio中的C ++重构功能所在。我们提供一套工具来帮助您更改代码。目前,Visual Studio支持C ++的以下重构操作:

•重命名

•提取功能

•更改功能签名

•创建声明/定义

•移动功能定义

•实现纯虚

•转换为原始字符串文字

许多这些功能在我们的公告博客文章“所有关于Visual Studio中的C ++重构”中被提及。之后添加了更改功能签名,但功能完全符合您的期望 - 它允许您更改功能的签名并在整个代码库中复制更改。您可以通过右键单击代码中的某个位置或使用“编辑”菜单访问各种重构操作。还要记住Ctrl + R,Ctrl + R来执行符号重命名; 它很容易是最常见的重构操作。 另外,查看C ++ Quick Fixes扩展,它增加了许多其他工具来帮助您更有效地更改代码。 有关其他信息,请查看我们的C ++中写入和重构代码的文档

使用EditorConfig执行代码样式

Visual Studio 2017内置支持EditorConfig,这是一种流行的代码样式执行机制。 您可以创建.editorconfig文件并将它们放置在代码库的不同文件夹中,将代码样式应用于这些文件夹及其下的所有子文件夹。 .editorconfig文件取代父文件夹中的任何其他.editorconfig文件,并覆盖通过工具>选项的任何格式设置。 您可以设置标签与空格,缩进大小等之间的规则。 当您将项目作为团队的一部分工作时,EditorConfig特别有用,例如,当您的团队通常使用空格时,如果开发人员想要检查使用制表符而不是空格格式化的代码。 EditorConfig文件可以轻松地作为代码回购的一部分进行检查,以强化您的团队风格。

键盘快捷键参考

有关Visual Studio C ++开发人员的一整套默认键绑定,请参阅我们的Visual Studio 2017键盘快捷键参考

结论

最后,您可以在docs.microsoft.com的官方文档页面中找到有关如何使用Visual Studio的其他资源。 特别是,对于开发人员的生产力,我们有以下文章可供选择: •在代码和文本编辑器中编写代码 - 了解该领域的更多功能。 •编写和重构代码(C ++) - 提供一些C ++生产力提示。 •查找和使用Visual Studio扩展 - 许多社区贡献者提交免费和付费扩展,可以提高您的开发体验。