在 C++ 中的导航和搜索
按名称导航
ReSharper 可以通过几个按键将您带到任何代码项或文件。 导航范围包括整个解决方案中的符号和文件,以及标准库、外部依赖项中的所有符号和文件。
按名称查找解决方案中的代码项
要统一访问所有搜索结果,请按 Control+N 显示一个弹出窗口,您可以开始输入并查找与您的输入匹配的 解决方案中的代码项。
如果您想将搜索限制为类型(类、接口、结构或枚举),请按 Control+N 两次。
如果您想要 通过纯文本匹配查找任何内容 ,请按 Control+N 三次。
如果您想要 搜索符号 (类型、方法、属性、字段等),请按 Shift+Control+Alt+N。
您还可以通过按 Shift+Control+N 仅搜索文件。
ReSharper 还允许您通过按 Control+F12 键入名称 跳转到当前文件中的类型和类型成员。
调用上述任何命令后,开始输入目标项的名称、其 CamelHumps 缩写和/或通配符。 匹配项列表会随着您的输入逐渐缩小,最可能的候选项会显示在列表的顶部。
一旦目标项出现在列表中,您可以选择它以在编辑器中打开。 要在 查找结果 窗口 中查看并 分析匹配项列表,请单击 在“查找结果”中显示
,按下
Shift+Enter
或
+
数字键盘上的键。
ReSharper 可以记住您使用 全局搜索/转到类型、 转到符号、 转到文件 和 转到文本 操作查找内容时的最后输入。 要启用或禁用此行为,请使用 ReSharper 选项的 页面上的 记住上次搜索 复选框。 当选择此选项时,ReSharper 还会将编辑器中的当前选中内容用作初始搜索查询。 例如,您可以在字符串中选择一个文件名,然后按 Shift+Control+N 搜索解决方案中与该名称匹配的文件。
转到声明
使用此命令从任何符号使用处导航到符号的声明。 您可以从 解决方案资源管理器、 文件结构窗口和其他工具窗口调用此命令。
要导航到相反方向(符号使用),当您已经 在符号声明上时,可以调用 转到声明 命令,或者使用 转到符号的用法 命令。
要转到符号声明,请按 Control+B ,选择主菜单中的 ,或按住 Ctrl 键单击符号。
转到声明适用于非依赖 decltype 修饰符和 lambda(跳转到 lambda 主体)。 您可以从声明跳转到签名不匹配的定义(例如,从更改后的成员函数声明跳转到其旧签名的定义),反之亦然。 转到声明在初始项目索引期间也可以使用。
转到声明还适用于未解析的标识符、注释和宏主体。 ReSharper 将找到所有名称匹配的符号,并允许您导航到它们。
在不受支持的 C++ 文件中(例如,C++/CX),转到声明会自动回退到相应的 Visual Studio 导航操作。
转到文件成员
使用此命令快速导航到当前文档中的特定类、函数或字段。
要导航到文件成员,请按 Control+F12 或从主菜单中选择 。
转到符号的类型
当 转到声明 命令导航到符号声明的位置时, 符号类型 命令导航到当前选中符号类型的声明。 例如,如果您有一个变量 Foo myVar = new Foo(); 并在 myVar 的使用处调用此命令,它将带您到类 Foo 的声明。 如果您对一个函数调用此命令,它会导航到该函数的返回类型。
此命令也适用于 typedef。 您可以从 解决方案资源管理器、 文件结构窗口和其他工具窗口调用此命令。
要导航到符号的类型,请按 Control+Shift+T 或从主菜单中选择 。
转到符号的用法
此命令允许您快速从符号的声明或任何其他用法导航到其特定用法。 您可以从 解决方案资源管理器、 文件结构窗口和其他工具窗口调用此命令。 可以使用 转到声明 命令进行相反的导航。
使用此命令获得的用法列表与 查找用法 的列表相同。 但对于用法数量有限的符号,当您寻找特定用法并希望在不打开 查找结果 窗口 的情况下直接跳转到该用法时,此命令更为方便。
您可以为发现单个用法的情况配置 ReSharper 的行为。 默认情况下,用法会显示在弹出窗口中。 如果您希望 ReSharper 在这些情况下跳转到唯一用法,请在 ReSharper 选项 的 页面上选择相应的选项(转到用法:如果只有一个结果,则直接导航而不显示列表) Alt+R, O 。
要转到符号的用法,请按 Control+Alt+F7 或从主菜单中选择 。
转到基符号
此命令允许您向上导航继承层次结构,定位到当前符号的基类型或方法。 您可以从 解决方案资源管理器、 文件结构窗口和其他工具窗口调用此命令。
相反方向的导航可通过 转到派生符号 和 转到实现 命令实现。
要导航到基符号,请按 Control+U 或从主菜单中选择 。
对于从其他类型继承或实现接口的类型,以及覆盖、实现或隐藏基类型成员的成员,ReSharper 会显示 特殊的边栏图标 (例如,
)。 将鼠标悬停在图标上以查看基符号并向上导航继承层次结构。
转到实现
此命令帮助您找到类型和成员的实际实现——换句话说,定位它们执行的源代码。 例如,从基类型或成员,您可以跳转到其最终实现,绕过继承链中的中间步骤;从接口成员的用法,您可以跳转到该成员实现的所有位置。
您可以从 解决方案资源管理器、 文件结构窗口和其他工具窗口调用此命令。 如果需要,您可以使用 转到基符号 命令以相反方向导航。
要导航到实现,请按 Control+Shift+Alt+B 或从主菜单中选择 。
转到派生符号
此命令获取类型或成员的所有派生符号列表,并允许您直接导航到继承层次结构中的某个符号。 如果您只寻找实际实现而不关心继承链的中间步骤,请使用 转到实现。
要导航到派生符号,请按 Alt+Control+B 或从主菜单中选择 。
在头文件和源文件之间切换
对于所有具有单独声明和定义的符号,ReSharper 会在左侧显示 导航到声明/定义
操作指示器。 您可以单击此指示器或按 Alt+Enter 快速在符号的声明和定义之间切换。
还有更多方法可以在头文件和相应的源文件之间切换,反之亦然:
按 Alt+O 。
按 Control+Shift+G 或从主菜单中选择 ,然后在 导航到 弹出窗口中选择 切换头文件/源文件。
Ctrl - 单击符号名称。
转到主模板/特化
如果一个类或函数模板有多个特化,ReSharper 允许您在主模板/特化之间切换。
当您的光标位于主模板或其中一个特化上时,有两种方法可以在特化之间导航:
无论哪种方式,都会出现一个包含所有特化的弹出窗口,您可以在其中选择所需的特化:

查找用法
此命令允许在 解决方案和引用的程序集 中查找一个或多个符号的所有用法。 您可以从符号的声明或任何其他用法开始搜索。 您可以从 解决方案资源管理器、 文件结构窗口和其他工具窗口调用此命令。
如果有多个用法,ReSharper 会帮助您在 查找结果 窗口 中 分析结果。
您可以更改默认行为,以便即使是单个找到的用法也显示在 查找结果 窗口中。 为此,请清除 转到用法:如果只有一个结果…… 复选框,该复选框位于 ReSharper 选项 的 页面 Alt+R, O 。
要查找当前符号的用法,请按 Alt+F7 或从主菜单中选择 。
查找相关实体的用法
此命令允许您在指定范围内定位与所选符号以某种方式相关的实体的用法(例如文本出现、动态引用等)。 您可以从 解决方案资源管理器、 文件结构窗口和其他工具窗口调用此命令。
要查找当前符号及相关实体的用法,请按 Shift+Alt+F7 或从主菜单中选择 。
在文件中高亮显示用法
编辑器 会自动高亮显示光标处符号的用法,这在短文件和小范围的局部变量中非常方便。 然而,这种高亮显示在较大的上下文中并不总是有效,因为选中状态仅在光标停留在符号上时存在。
还有一种与光标无关的高亮显示,它会一直保留,直到您按下 Esc ,并为读取和写入访问用法应用不同的 可配置 颜色。 您可以为单个项目或多个不同项目同时切换此高亮显示,然后使用快捷键在高亮显示之间跳转。
要查找当前符号及相关实体的用法,请按 Control+Shift+F7 或从主菜单中选择 。
转到包含声明
当您的光标位于类型或函数的主体中时,您可以通过一个快捷键跳转到该类型或函数的声明。
要转到包含声明,请按 Control+[ 或从主菜单中选择 。
转到下一个/上一个成员
使用 下一个/上一个成员 命令,您可以快速在代码文件中的相邻成员和嵌套类型之间导航,或在标记文件中的相邻标签之间导航。
要调用这些命令,请按 Alt+Down/Alt+Up 或从主菜单中选择 。
转到相关文件
要转到相关文件,请按 Control+Alt+Shift+G 或从主菜单中选择 。
在解决方案资源管理器中定位
此便捷的导航功能允许您在 Solution Explorer 中展开树状结构,自动滚动并高亮显示与当前文档对应的项目。 当您有一个庞大的解决方案,或者屏幕空间有限,迫使您将 Solution Explorer 窗口缩小到极限时,此功能尤其有用。
要转到相关文件,请按 Alt+Shift+L 或从主菜单中选择 。
导航到最近的位置
ReSharper 会跟踪您的操作和导航历史记录,并提供一些命令,帮助您导航到您编辑过或仅查看过代码的位置。
导航文件结构
使用 ReSharper,您可以使用 文件结构窗口 导航当前文档的结构,这大大简化了在大型文件中的导航。 该窗口与 编辑器 同步:当您切换到另一个 编辑器 选项卡时,窗口会显示相应文件的结构。
要打开 文件结构窗口,请按 Control+F11 或从主菜单中选择 。

导航到操作
ReSharper 帮助您快速查找并应用其任何操作,而无需在菜单中查找。 所谓 操作 ,是指可在当前插入符位置执行的命令或任何全局命令,例如打开工具窗口的命令。
您还可以搜索并导航到选项页面。
要查找并执行 一个 ReSharper 操作,请按 Control+Shift+A 或从主菜单中选择 。
断点导航
使用 ReSharper,您可以快速跳转到解决方案中的任何断点/跟踪点,并在专用工具窗口中查看所有断点,该窗口具有分组、搜索、预览和符号名称功能。
要跳转到任何断点,请按 Control+Alt+F9 或从主菜单中选择 。
ReSharper 还提供了其自己的 R# 断点 窗口,您可以将其用作 Visual Studio 原生窗口的替代方案——您可以开始输入以搜索断点,或使用上下文菜单启用/禁用或删除断点。 您可以在下面的截图中查看两者之间的区别。

要显示 R# 断点 窗口,请按照 上文 所述打开断点弹出窗口,然后单击 在“断点”窗口中显示
,按
Shift+Enter
或
+
数字键盘上的按键。
书签
如果您希望稍后返回代码中的某个位置,您可以在您的解决方案或 库代码中为任意代码行添加书签。
您可以使用两种类型的书签:
带助记符的书签——最适合标记您经常引用的代码行,例如当前解决方案中的前 10 个位置。 您最多可以同时拥有 10 个编号书签。 它们通过 编辑器 左侧边栏上的以下图标指示:
.png)
使用专用快捷键操作此类书签: Ctrl+Shift+[数字] 切换带有该数字的书签; Ctrl+[数字] 导航到带有该数字的书签。
匿名书签——数量不限,因此您可以标记任何您认为将来值得返回的代码行。 它们通过 编辑器 左侧边栏上的以下图标指示:
.png)
您可以通过书签弹出窗口切换此类书签并导航它们。
有关更多信息,请参阅 书签
待办事项资源管理器
ReSharper 提供了一种简单的方法来跟踪任务和代码中的 技术债务 — 匹配 特定模式 的代码项(注释、字符串文字或标识符)可以在编辑器以及整个解决方案中通过 待办事项资源管理器 窗口轻松定位。
有关更多信息,请参阅 待办事项列表