在 Visual Studio 中导航 C++ 代码
Visual Studio 提供了一套工具,可用于快速有效地导航代码库。
打开包含的文件
右键单击 #include
指令,然后选择“转到文档”。 或者,选择 F12 同时光标悬浮在该行上以打开文件。
切换标头/代码文件
可以在头文件及其对应的源文件之间切换。 右键单击文件中的任意位置并选择“切换标头/代码文件”。 或者,可以选择 Ctrl+K、Ctrl+O。
转到定义/声明
在编辑器中右键单击码位元素,然后选择“转到定义”,或选择 F12,即可导航到码位元素的定义。 同样,右键单击打开上下文菜单,或选择 Ctrl+F12,即可导航到声明。
转到
“转到”是指一组导航功能,其中每个功能都会根据指定的筛选器提供特定结果。
使用 Ctrl+, 即可打开“转到”。 此操作会在正在编辑的文档上创建搜索框。
“转到”包括以下搜索筛选器:
- 转到行 (Ctrl+G):快速跳转到当前文档中的其他行。
- 转到全部 (Ctrl+,) 或 (Ctrl+T):搜索结果包括后面所有内容。
- 转到文件 (Ctrl 1, F):搜索解决方案中的文件。
- 转到类型 (Ctrl 1, T):搜索结果包括:
- 类、结构和枚举。
- 接口和委托(仅适用于托管代码)。
- 转到成员 (Ctrl 1, M):搜索结果包括:
- 全局变量和全局函数。
- 类成员变量和成员函数。
- 常量。
- 枚举项。
- 属性和事件。
- 转到符号 (Ctrl 1, S):搜索结果包括:
- “转到类型”和“转到成员”的结果。
- 所有剩余的 C++ 语言构造(包括宏)。
首次使用 Ctrl + 调用“转到”时,会激活“转到全部”(搜索结果中无筛选器)。 然后,可以使用搜索框附近的按钮选择所需的筛选器。 可以使用相应的键盘快捷方式调用特定筛选器。 执行此操作会打开已预先选定该筛选器的“转到”搜索框。 所有键盘快捷方式均可配置。
要应用文本筛选器,请使用该筛选器的相应字符(后跟空格)启动搜索查询。 (“转到行”可以选择省略空格)。这些文本筛选器有:
- 转到全部:(无文本筛选器)
- 转到行号::
- 转到文件:f
- 转到类型:t
- 转到成员:m
- 转到符号:#
以下示例显示使用“f”筛选器的“转到文件”操作的结果:
要查看文本筛选器列表,请键入 后跟空格的 ?。 还可以使用“编辑”菜单访问“转到”命令。 这是另一种主要的“转到”键盘快捷方式的方法。
“查找”或“在文件中查找”
可以使用“查找” (Ctrl+F) 或“在文件中查找” (Ctrl+Shift+F),对解决方案中的任何内容运行文本搜索。
“查找”范围可以是某一选定范围、当前文档、所有打开的文档、当前项目或整个解决方案。 可以使用正则表达式和纯文本。 它还会在 IDE 中自动突出显示所有匹配项。
“在文件中查找”是“查找”的功能更加强大的版本,它在“查找结果”窗口中显示结果。 可以搜索外部代码依赖项、按文件类型进行筛选等。
可以在两个窗口中整理“在文件中查找”结果。 可以一起追加多个搜索的结果。 选择某一结果,即可转到文件中的该位置。
有关详细信息,请参阅 Visual Studio 文档中的在文件中查找。
查找所有引用
要在代码库中查找符号的所有使用情况,请将脱字号放在符号中或符号后面,然后右键单击并选择“查找所有引用”。 可以通过多种不同方式对结果进行筛选、排序或分组。 结果将以增量方式填充。 它们被分类为“读取”或“写入”,用于帮助查看解决方案中的内容,而不是系统标头或其他库。
可以按以下类别对结果进行分组:
- 项目,然后定义
- 仅定义
- 定义,然后项目
- 定义,然后路径
- 定义、项目,然后路径
筛选结果
要对结果进行筛选,请将鼠标悬停在列上,然后选择弹出的筛选图标。 可以筛选第一列的结果,以隐藏不需要的字符串和注释引用等内容。
确认的结果:对要搜索的符号的实际代码引用。 例如,搜索名为
Size
的成员函数将返回对Size
的所有引用,该引用与定义Size
的类的范围匹配。取消确认的结果:默认情况下,此筛选器处于关闭状态,因为它显示的符号,名称与要搜索的符号匹配但不是该符号的实际引用。 例如,如果你有两个类,每个类都定义一个名为
Size
的成员函数,并且你在Class1
对象的引用上运行Size
搜索,则对Class2
的Size
的任何引用都显示为取消确认。未处理的结果:可能需要一些时间才能在大型代码库上完成“查找所有引用”操作,因此“结果列表”在此处显示“未处理”结果。 未处理的结果与要搜索的符号的名称匹配,但尚未确认为实际代码引用。 启用此筛选器,可以更快获得结果。 某些结果可能不是实际引用。
对结果进行排序
通过选择任何列,可按该列对结果进行排序。 通过再次选择该列,可在升序或降序之间进行切换。
导航栏
使用编辑器窗口上方的“导航栏”,可以导航到文件中类型的定义,或者导航到类型成员。