导航和搜索

借助ReSharper的导航功能,您可以轻松地遍历整个解决方案。 跳到基本代码中的任何文件、类型或成员,或者从特定符号导航到其用法、基本符号与派生符号或者实现。

ReSharper中的上下文导航

Navigate To是一种适用于所有上下文导航的快捷键。 Navigate To可以列出当前脱字符号位置可用的所有目标。 按Alt+`可以获取以下对象的快速导航链接:声明、类型声明、基类、继承者,或脱字符号下符号的用法;接口的接口实现和函数的函数出口,等等。

Go to File Member

Go to File Member

要快速导航到当前文件中的特定方法或字段,请使用Go to File Member命令,此命令可以通过按Alt+\调用。 与Go to Type一样,输入符号名称,然后从匹配成员的列表中选择。 此功能适用于所有支持的语言中的文件成员。

Go to Everything/Go to Type

此命令(可以通过按Ctrl+T调用)结合了两种不同的功能:

Go to Everything会首先出现,它可以快速导航到所有可能的目标(类型、符号或文件)。 建议列表会在您调用此命令后尽快出现,最初包含您最近导航到的文件和代码位置。 列表会根据您的输入实时更新。 您可以使用以/开头的特殊内联命令,对搜索结果进行高级筛选。

Go to Type会在您重复按此快捷键时出现,它让您可以导航到您的解决方案中的任何类型。

这两个功能和其他“Go to”功能还支持通配符:*(星号)表示零个或多个字符;使用双直引号引起搜索查询将执行精确匹配搜索;精确匹配搜索中的一个?(问号)表示一个字符。

用于文本搜索的“Go to Text”

用于文本搜索的“Go to Text”

借助此导航操作(可以通过按Ctrl+T、T、T调用),您可以快速查找并导航到解决方案中包含的源文件和文本文件中的任何文本。 与其他导航命令类似,如果有太多的匹配项,您可以按数字键盘上的+,在Find Results窗口中查看结果。 您还可以使用特殊的内联命令来减少搜索结果的数量:/cp可以在当前项目中搜索,/ext:可以在具有特定扩展名的文件中搜索,/fm:可以搜索特定的文件掩码。

Go to Implementation与Go to Derived Symbols

Go to Implementation

借助此导航功能(可以通过Ctrl+F12快捷键调用),您可以从基类型或成员跳到任意的最终实现,跳过继承链中的中间步骤。

它与 Go to Derived Symbols 类似,但在您需要绕过类型层次结构中的一个或多个级别时帮助您节省时间。 观看GIF以查看差异。

导航到操作

Go to Action

ReSharper可以帮助您快速查找和应用任何操作,而无需深挖菜单(对于操作,我们是指当前脱字符号位置可用的可执行命令或者可以打开工具窗口的命令)。 要查找操作,只需在编辑器中的任意位置按Alt+Enter,并输入命名名称或相关词语。

Go to Exposing APIs

Go to Exposing APIs

此命令可以通过 Navigate To 快捷键调用(按 Alt+`),能够从类型导航到解决方案中您可以获取此类型的实例的所有位置:公共字段与属性、方法返回值和输出参数,等等。

Go to Symbol

Go to Symbol

Go to Symbol命令可以按名称和解决方案级搜索方法、字段和其他文件成员。 按Shift+Alt+T可以调用此命令。 请注意,ReSharper 的所有“转到”命令(包括 Go to Symbol)都支持不区分大小写的 CamelHumps。 也就是说,您可以输入第一个字符和成员名称中包含的任意后续字符,更快地查找成员 - 例如,您可以通过输入tfixs来查找testFixedSizeBuffer

Go to Base

Go to Base

在编辑器中将脱字符号放到某个类型或方法的用法或声明上,然后按Alt+Home,您可以在层次结构中向上导航到基类型或方法。
此外,您还可以查看方法声明左侧出现的特殊装订区域图标,查看某个方法何时重写、实现或隐藏其他方法。 点击图标可以在方法层次结构中向上导航。

导航到符号声明

Go to Declaration

要导航到符号的声明,请将脱字符号放在任意符号用法处,然后按F12,或者按住Ctrl并点击符号。 ReSharper将跳到相关源文件中的对应类型、方法、字段或局部变量的声明。 对于库符号,对应的实体将显示在Visual Studio的对象浏览器中,或者以元数据视图或反编译代码的形式显示在编辑器中,具体取决于ReSharper设置。

在用法之间导航

在用法之间导航

如果您的脱字符号已经位于符号声明处,您还可以调用Go to Declaration命令。 如果您只有一个声明和一个用法,则可以使用一个快捷键轻松在它们之间导航。 如果某个符号有多个用法,后续点击Go to Declaration会将您定位到符号的其他用法,一次一个用法。 一个类似Find Usages的窗格可以为用法之间的导航提供辅助,此窗格可以枚举找到的用法,包含在用法之间点击的其他控件,如果您喜欢,还可以将找到的所有用法刷新到常规的Find Results窗口中。

Go to Related Files

此功能(可以通过按Ctrl+Alt+F7调用)能以多种方式将您从当前文件转到引用的任何文件。 此功能对于 Web 站点和应用程序非常有用:例如,借助此功能,您可以从 Web 表单跳到它的主控页、用户控件、引用的图像。 在ASP.NET MVC应用程序中,此功能可以简化视图与控制器之间的导航。

要详细了解 ReSharper 为 Web 开发者提供的高级导航和其他功能,请参阅 ASP.NET 和 ASP.NET MVC 工具

导航到附近的文件

Go to File Nearby

此功能可以通过 Navigate To 快捷键(Alt+`)调用,能够帮助您在当前文件中快速导航项目结构。 在打开的弹出窗口中,您可以查看当前文件所属的项目以及位于相同目录级别的文件夹与文件,您还可以轻松跳到这些文件或者创建新文件或文件夹。

为库符号选择“Sources from Symbol Files”导航选项

导航到库代码

任何解决方案都包含自己的源代码和对库的引用。 我们原本以为如果您能导航到这些库以及在这些库之间导航会非常方便,就像您在源代码中一样。

某些公司使用调试信息文件(PDB)的“源服务器”功能发布部分源代码。 另一方面,Microsoft使用这种技术提供.NET Framework源代码的访问权限。 如果您有PDB并且安装了ReSharper,则可以访问以这种方式存储的源代码,如同它们是您的解决方案的一部分一样。 如果您想查看某个具体的.NET Framework类包含什么,ReSharper也可以向您显示。

即使源服务器不可用,也不用担心:ReSharper能够从元数据重建库代码的结构。

下面是ReSharper在源服务器可用时的运行方式:

  1. 您在库符号上点击Alt+`,打开包含导航选项列表的Navigate To
  2. 您为库符号选择外部导航选项。
  3. ReSharper从源服务器中下载PDB文件。
  4. ReSharper显示选定的库符号声明,如同声明在您的解决方案中定义的一样。
查找符号的用法

Find Usages

Find Usages可以快速定位您的代码中的任何符号(类型、方法和字段,等等)的用法。 只需将脱字符号放在您想要查找其用法的符号上,然后按Shift+F12。 如果您有一个混合语言项目,可以使用ReSharper在多个语言之间查找用法。

搜索结构显示在Find Results窗口中,并以层次结构形式组织。 从此窗口中,您可以使用键盘或鼠标直接导航到任何用法。 Find Results的附加功能提供了多种处理搜索结果的方式,包括:

  • 预览源代码
  • 高亮显示已中断或未完成的用法
  • 按读取或写入用法、调用用法、特性用法和文档中的用法等条件进行筛选
  • 按用法类型和按类别进行分组
  • 以标签形式组织最近用法搜索,等等

当Find Results窗口打开时,您可以按Ctrl+Alt+PageUp/PageDown(即使在编辑器中也可以),在用法之间导航。

查找相关符号的用法

Find Usages Advanced

要指定搜索范围和可以找到的用法类型,请使用Find Usages Advanced功能,此功能可以通过按Ctrl+Shift+Alt+F12调用。

根据上下文的不同,您可以在解决方案中精确指定搜索范围;是否在引用的库中搜索;是否查找文本实例、实现属性或者对您正在查看的符号的动态引用。

File Structure视图

File Structure

File Structure窗口适用于所有支持的语言和文件类型。在C#或VB.NET文件中,您可以查看这些文件包含的方法、字段、类和区域,以及直接导航到它们的声明 - 只需按Ctrl+Alt+F

在ASP.NET中,借助File Structure,您可以检查当前打开的文件的标记、scriptlet、控件和其他结构化元素,并直接导航到它们的声明。 请参阅 ASP.NET 和 ASP.NET MVC 工具,详细了解此功能和其他导航功能如何帮助 Web 开发者。

在生成脚本中,File Structure让您可以查看当前脚本包含哪些属性和目标。

此窗口还让您可以通过简单的拖放操作在文件中重新排列项,调用导航操作与重构,以及创建和删除区域。

File Structure窗口与编辑器完全同步。 对文件所作的所有更改都会立即反应在File Structure窗口中,反之亦然。

使用Tab进行结构化导航

使用Tab进行结构化导航

借助ReSharper,您可以使用TabShift+Tab键在代码的逻辑部分之间导航,与您在Web浏览器中的导航方式类似。

例如,编辑for语句时,Tab将依次选择初始化表达式语句、终止条件和迭代器语句。 Shift+Tab将以相反的顺序进行这些选择。

当光标位于代码行中首个非空白字符之前时,您仍然可以使用Tab设置缩进。

了解详情:ReSharper如何让Tab再现魔力

ReSharper中的中间语言查看器

IL Viewer

借助中间语言查看器,您可以深入挖掘第三方库代码,并显示与您自己的源代码对应的中间语言(请注意,您需要先进行编译)。

要查看IL Viewer的运行原理,请在菜单中选择ReSharper | Windows | IL Viewer

ReSharper中的Stack Trace Explorer

Stack Trace Explorer

当您收到外部堆栈跟踪(例如,从错误报告)时,您可以将其复制并粘贴到Stack Trace Explorer中以导航到引起异常的位置。 堆栈跟踪中的代码行将以超链接形式表示。 要打开Stack Trace Explorer,请将堆栈跟踪复制到剪贴板中并按Ctrl+E、T

Go to File

Go to File

Go to File可以将您导航到解决方案中的任何文件。 此命令的快捷键为Ctrl+Shift+T,支持其他“转到”命令中使用的所有搜索技术和通配符。

Go to Derived Symbols

Go to Derived Symbols

借助此命令,您可以通过按Alt+End快捷键导航到派生类型或方法。 直接继承者以粗体高亮显示。

Go to Generic Substitutions

Go to Generic Substitutions

此命令可以通过 Navigate To 快捷键调用,可以显示能够替换某个选定通用类型参数的所有类型列表,以及使用每个替换的所有代码位置。

Go to Type of Symbol

Go to Type Declaration

Ctrl+Shift+F11可以导航到某个变量、字段或参数所属的类型的声明。 ReSharper将为库类型切换到源代码中的声明,并在对象浏览器中显示对应的符号,或者显示反编译代码。

Go to Next Member/Go to Next Tag

Alt+Up,您可以在C#或VB.NET代码文件中快速转到下一个文件成员,或者在XML或XAML文件中转到下一个标记。

Go to Previous Member/Go to Previous Tag

与Go to Next Member类似,此功能可以让您转到上一个成员或标记 - 只需按Alt+Down即可。

导航到符号用法

Go to Usage

您可以按Shift+Alt+F12,快速导航到具有多个用法(例如具有私有字段)的符号。 它可以在弹出窗口中显示用法,而不用打开整个工具窗口。

不过,如果显示符号用法列表的弹出窗口包含过多的项,只需点击弹出窗口右上角的放大镜图标,即可将用法列表转移到“Find Results”窗口中。

ReSharper中的“高亮显示用法”

高亮显示用法

要在当前文件中高亮显示某个符号的所有用法,只需将脱字符号放在任何符号用法上,然后按Shift+Alt+F11。 您还可以高亮显示命名空间导入指令,甚至表达式的用法。 在大文件中,您可以使用右侧的标记栏在高亮显示的用法之间导航。
ReSharper可以在XAML标记和语言内快速查找并高亮显示符号用法。

ReSharper的模式目录中列出的搜索和替换模式

结构化搜索和替换

借助此功能,您可以创建模式来搜索ReSharper原生无法检测的代码异味或旧代码,并将其替换为优质代码。 不仅如此,为了轻松重复移除有问题的代码,您还可以创建自定义代码检查,并设置 ReSharper,使之为代码提供快速修复

生成模式和强化良好实践从未如此简单。 公司和团队策略、自定义框架、最喜爱的开源库和工具 - 结构化模式可以全部覆盖。 作为奖励,您可以导入和导出最佳模式,并将它们与同事分享或者在ReSharper安装之间移动。

类型层次结构视图

类型层次结构

借助ReSharper,您可以在专用窗口中查看某种类型的继承层次结构。 此窗口可以显示选定类型的基类型和继承者,并且让您只需点击一下即可导航到任意项。 对于层次结构中的任何节点,您可以在单独的预览窗格中查看所有成员或仅查看多态成员。
要为某个类型打开类型层次结构窗口,请将脱字符号放在类型名称处,然后按Ctrl+Alt+H,或者选择ReSharper | View | Type Hierarchy

ReSharper书签

书签

这是一个简单但强大的功能:您可以使用一个快捷键拖动带编号的标记,并使用另一个快捷键随时跳回来。 您可以创建多达10个带编号的书签以及无数个不带编号的书签。 已加入书签的位置的完整列表将在一个弹出窗口中显示,以加快代码点之间的导航。

借助ReSharper查看最近的文件

View Recent Files

Ctrl+,可以打开一个弹出窗口,其中包含最近打开的文件的列表,您可以在此窗口中选择并导航到任何项。

借助ReSharper查看最近编辑的代码位置

View Recent Edits(和Go to Last Edit Location)

View Recent Edits和View Recent Files类似,可以显示一个弹出窗口,其中包含您最近修改的文件和符号的列表。 如果您的当前编辑会话已开始一段时间,则可以输入您想重新打开的文件的名称,缩小列表。

或者,也可以使用Go to Last Edit Location(Ctrl+Shift+Backspace),将脱字符号快速定位到您最近更改代码的位置,这样就无需显示弹出窗口。 后续点击此快捷键让您可以更深入地查看编辑历史。

To-do Explorer

To-do Explorer

To-do Explorer可以帮助您跟踪使用todonote和/或bug标记标注的所有提醒项,以及引发NotImplementedException的代码位置。 To-do Explorer可以从您的解决方案的所有文件中检索所有此类项,并在一个工具窗口中显示。

如果您使用自己的标记在代码备注中进行标注,则可以配置自定义模式,To-do Explorer也能进行查找。

Process Explorer

Process Explorer

Process Explorer窗口可以显示当前正在运行的所有进程,并且可以探索进程的模块并对其中的.NET程序集进行反编译。

您可以选择显示或隐藏原生进程和模块,或者打开进程层次结构视图。

筛选列表以查找您正在寻找的模块或进程,然后将其程序集添加到Assembly Explorer中进行更深入的调查。

快捷键注释

本页面提供的所有键盘快捷键都在 ReSharper 的默认“Visual Studio”按键映射中。 有关 ReSharper 两种按键映射的详细信息,请参阅 ReSharper 文档