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

VisualStudio中包含了一套生产力工具,使C++开发人员能够轻松地阅读、编辑和导航他们的代码。在这篇博文中,我们将深入了解这些特性并回顾它们的功能。本文是针对visualstudio新用户的系列文章的一部分。

null

这篇博文介绍了以下概念:

  1. 阅读和理解代码
  • 在代码库中导航
  • 编写和重构代码
  • 键盘快捷键参考
  • 结论
  • 阅读和理解代码

    如果你和大多数开发人员一样,那么你花在代码上的时间可能比修改代码要多。有鉴于此,visualstudio提供了一套特性来帮助您更好地可视化和理解您的项目。

    基本编辑器功能

    VisualStudio会自动为C++代码提供语法着色,以区分不同类型的符号。未使用的代码(例如 #如果0 )颜色更淡了。此外, 轮廓 在代码块周围添加,以便于扩展或折叠它们。 Basic editor features 如果代码中存在会导致生成失败的错误,VisualStudio会在出现问题的地方添加一个红色的曲线。如果visualstudio发现您的代码有问题,但该问题不会导致生成失败,那么您将看到一个绿色的曲线。您可以在中查看编译器生成的任何警告或错误 错误列表 窗户。 Error List window 如果将光标放在大括号“{”或“}”上,VisualStudio将亮显与其匹配的对象。

    按住可在编辑器中放大或缩小 Ctrl键 使用鼠标滚轮滚动或选择左下角的缩放设置。 Zooming in Visual Studio editor

    这个 工具>选项 菜单是VisualStudio选项的中心位置,使您能够配置各种不同的功能。为您的独特需求定制IDE是值得探索的。 Configuring settings in Visual Studio via Tools > Options 您可以通过转到将行号添加到项目中 文本编辑器>所有语言>常规 或者用 快速启动 (Ctrl+Q) . 可以为所有语言或特定语言设置行数,包括C++。

    快速信息和参数信息

    您可以将鼠标悬停在任何变量、函数或其他代码符号上,以获取有关该符号的信息。对于可以声明的符号, 快捷信息 显示声明。 Quick Info tooltip example 当您编写对函数的调用时, 参数信息 被调用以澄清预期作为输入的参数类型。如果代码中有错误,可以将鼠标悬停在上面,Quick Info将显示错误消息。您还可以在 错误列表 窗户。 Quick Info tooltip displaying an error in Visual Studio 此外, 快捷信息 显示您放置在所悬停的符号定义上方的任何注释,使您可以方便地检查代码中的文档。

    滚动条地图模式

    VisualStudio比大多数应用程序更进一步地理解了滚动条的概念。与 滚动条地图模式 ,您可以在不离开当前位置的情况下同时滚动和浏览文件,也可以单击工具栏上的任何位置在其中导航。即使有 地图模式 关闭时,滚动条以绿色(表示已保存的更改)和黄色(表示未保存的更改)突出显示代码中所做的更改。你可以打开 地图模式 在T中 工具>选项>文本编辑器>所有语言>滚动条>垂直滚动条使用地图模式 或者用 快速启动(Ctrl+Q) . Using Scroll Bar Map Mode to view your code file at a glance

    类视图

    有几种可视化代码的方法。一个例子是 类视图 . 你可以打开 类视图 查看 功能表或按 Ctrl+Shift+C组合键 . 类视图 显示所有代码符号及其范围和父/子层次结构的可搜索树集,按项目组织。你可以配置什么 类视图 显示自 类视图设置 (单击窗口顶部的齿轮箱图标)。 The Class View window

    生成包含文件的图形

    要了解文件之间的依赖关系链,请在任何打开的文档中单击鼠标右键,然后选择 消息 包含文件的速率图 . Generate Graph of Include Files feature 您还可以选择保存图形以供以后查看。

    查看呼叫层次结构

    您可以右键单击任何函数调用以查看其调用层次结构的递归列表(调用它的函数和它调用的函数)。列表中的每个函数都可以以相同的方式展开。有关详细信息,请参阅 调用层次结构 . View Call Hierarchy feature

    Peek定义

    通过右键单击变量或函数并选择 Peek定义 ,或按 Alt+F12键 把光标放在那个符号上。这是一种快速了解符号更多信息的方法,无需离开编辑器中的当前位置。 Use Peek Definition to get a quick look at where and how a code symbol is defined.

    visualstudio提供了一套工具,允许您快速高效地浏览代码库。

    打开文档

    右键单击 #包括 指令并选择 打开文档 ,或按 Ctrl+Shift+G组合键 将光标移到该行上,打开相应的文档。

    切换头文件/代码文件

    通过右键单击文件中的任意位置并选择 切换头文件/代码文件 或按相应的键盘快捷键: Ctrl+K、Ctrl+O .

    解决方案管理器

    解决方案管理器 是解决方案中管理和在文件之间导航的主要方法。您可以通过在中单击任何文件来导航到该文件 解决方案管理器 . 默认情况下,文件按其所在的项目分组。要更改此默认视图,请单击 解决方案和文件夹 按钮切换到基于文件夹的视图。 Solution Explorer window

    转到定义/声明

    通过在编辑器中右键单击代码符号并选择 转到定义 ,或按 12层 . 您可以从右键单击上下文菜单或按导航到声明 Ctrl+F12键 . Navigating to a definition or declaration via the editor context menu

    查找/在文件中查找

    您可以使用运行文本搜索来查找解决方案中的任何内容 查找 (Ctrl+F) 在文件中查找 (Ctrl+Shift+F) .

    “查找”可以限定为选定内容、当前文档、所有打开的文档、当前项目或整个解决方案,并支持正则表达式。它还会在IDE中自动高亮显示所有匹配项。 Find (Ctrl + F) 在文件中查找 是更复杂的版本 查找 在中显示结果列表的 查找结果 窗户。它甚至可以比 查找 ,例如允许您搜索外部代码依赖项、按文件类型筛选等等。你可以组织起来 查找 在两个窗口中搜索结果,或在 查找结果 窗户。中的单个条目 查找结果 如果不需要,也可以删除窗口。 Find in Files Find Results window

    查找所有引用

    查找所有引用 显示对选定符号的引用列表。更多关于 查找所有引用 ,看看我们的博客, 查找为更大搜索重新设计的所有引用 .

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

    (Ctrl+T) 是一种代码导航功能,可用于导航到文件、代码符号或行号。有关更多信息,请参阅 介绍Go To,导航到的继任者 .

    快速启动

    快速启动 使您可以轻松地导航到VisualStudio中的任何窗口、工具或设置。简单类型 Ctrl+Q键 或者单击IDE右上角的搜索框,搜索您要查找的内容。 Quick Launch search feature

    编写和重构代码

    VisualStudio提供了一套工具来帮助您编写、编辑和重构代码。

    基本编辑器功能

    通过选择代码行,按住键,可以轻松地上下移动代码行 中高音 ,然后按 上/下箭头键 .

    要保存文件,请按 保存 按钮,或按 Ctrl+S键 . 不过,一般来说,使用 全部保存 (Ctrl+Shift+S) .

    更改跟踪

    任何时候对文件进行更改时,左侧都会出现一个黄色条,指示进行了未保存的更改。保存文件时,该栏将变为绿色。 Change tracking in the editor 只要文档在编辑器中打开,绿条和黄条就会保留。它们表示自上次打开文档以来所做的更改。

    智能感知

    智能感知 是一个强大的代码完成工具,可以在键入时为您提供符号和代码段。C++ 智能感知 在visualstudio中实时运行,在更新代码库时对其进行分析,并根据键入的符号的字符提供上下文建议。当您键入更多字符时,推荐结果的列表将缩小。 How IntelliSense works in Visual Studio 此外,一些符号会自动省略,以帮助您缩小所需范围。例如,从类外部访问类对象的成员时,默认情况下将无法看到私有成员或受保护成员(如果您不在子类的上下文中)。

    从下拉列表中选择要添加的符号后,可以使用自动完成 标签 , 输入 ,或其他提交字符之一(默认情况下: {}[]().,:;+-*/%%&|^!=?@# ).

    提示: 如果要更改可用于完成的字符集 智能感知 建议,在 快速启动(Ctrl+Q) 然后选择 文本编辑器-> C/C++ +高级 选择打开 IntelliSense高级设置 第页。从那里,编辑 成员列表提交字符 带着你想要的变化。如果您发现自己意外地提交了您不想要的结果,或者希望有一种新的方法来这样做,这就是您的解决方案。 IntelliSense Advanced Settings 这个 智能感知 高级设置页的部分还提供了许多其他有用的自定义设置。这个 成员列表筛选模式 例如,期权对期权的种类有着巨大的影响 智能感知 您将看到的自动完成建议。默认情况下,它设置为 模糊的 ,它使用复杂的算法在键入的字符中查找模式,并将它们与潜在的代码符号相匹配。例如,如果您有一个名为 Myawesome类 你可以键入“MAC”并在你的自动完成建议中找到这个类,尽管省略了中间的许多字符。模糊算法设置了一个最小阈值,代码符号必须满足该阈值才能显示在列表中。

    如果您不喜欢模糊过滤模式,可以将其更改为 前缀 , 聪明的 ,或 没有 . 而 没有 不会减少名单的, 聪明的 筛选显示包含与键入内容匹配的子字符串的所有符号。 前缀 另一方面,过滤纯粹是搜索以键入内容开头的字符串。这些设置提供了许多选项来定义 智能感知 经验,值得一试,看看你喜欢什么。

    智能感知 不仅仅是指单个的符号。一些 智能感知 建议以代码片段的形式出现,它提供了代码构造的基本示例。代码片段很容易通过旁边的方形框图标来识别。在下面的屏幕截图中,“ 虽然 是自动创建基本 虽然 提交时循环。您可以选择在“高级设置”页中切换代码段的外观。 Code snippet for while loop Visual Studio 2017提供了两个新的 智能感知 帮助您缩小自动完成建议总数的功能: 预测智能感知 ,和 智能感知过滤器 . 看看我们的博客, C++智能感知改进——预测智能感知与过滤 ,以进一步了解这两个功能如何提高工作效率。

    如果你发现自己处在一个 智能感知 与您要查找的内容不匹配,并且您已经预先键入了一些有效字符,您可以通过单击 显示更多结果 下拉列表左下角的按钮-看起来像加号(+)-或按Ctrl+J。这将刷新建议,并添加一些新条目。如果你用的是 预测智能感知 ,这是一种可选模式,使用比通常更严格的过滤机制,您可能会发现列表扩展功能更有用。

    快速修复

    VisualStudio有时会建议改进或完成代码的方法。它以一些灯泡弹出窗口的形式出现,称为 快速修复 . 例如,如果您在头文件中声明一个类,VisualStudio将建议您可以在一个单独的.cpp文件中声明该类的定义。 Quick Fixes

    重构功能

    你有不满意的代码库吗?你是否发现自己需要进行彻底的改变,但害怕破坏你的建设或觉得这将需要太长时间?这就是VisualStudio中C++重构特性的所在。我们提供了一套工具来帮助您进行代码更改。目前,VisualStudio支持C++的以下重构操作:

    • 重命名
    • 提取函数
    • 更改函数签名
    • 创建声明/定义
    • 移动函数定义
    • 实现纯虚拟
    • 转换为原始字符串文字

    这些功能中的许多都在我们的公告博客中提到, VisualStudio中C++重构的全部内容 . 更改函数签名是在之后添加的,但是函数完全如您所期望的那样-它允许您更改函数的签名并在整个代码库中复制更改。您可以通过右键单击代码中的某个地方或使用“编辑”菜单来访问各种重构操作。这也值得记住 Ctrl+R,Ctrl+R 进行符号重命名;这是最常见的重构操作。

    此外,请查看 C++快速修复程序 扩展,它添加了许多其他工具来帮助您更有效地更改代码。

    有关更多信息,请查看我们的文档 C++中的代码编写与重构 .

    使用EditorConfig执行代码样式

    Visual Studio 2017内置了对 编辑器配置 ,一种流行的代码样式执行机制。您可以创建 .编辑配置 文件并将其放置在代码库的不同文件夹中,将代码样式应用于这些文件夹及其下的所有子文件夹。安 .编辑配置 文件取代任何其他文件 .编辑配置 并覆盖通过配置的任何格式设置 工具>选项 . 您可以围绕制表符与空格、缩进大小等设置规则。 编辑器配置 当您作为团队的一部分处理项目时,特别有用,例如当开发人员希望签入用制表符而不是空格格式化的代码时,当您的团队通常使用空格时。 编辑器配置 文件可以很容易地作为代码repo的一部分签入,以增强团队风格。

    了解有关VisualStudio中EditorConfig支持的详细信息

    键盘快捷键参考

    对于VisualStudioC++开发人员的一组默认键绑定,请看一下我们的 Visual Studio 2017键盘快捷键参考 .

    结论

    最后,您可以在我们的官方文档页面上找到有关如何使用visualstudio的其他资源 docs.microsoft.com . 特别是对于开发人员的生产力,我们提供了以下一组文章:

    © 版权声明
    THE END
    喜欢就支持一下吧
    点赞0 分享