Resharper进阶二:快速定位

来源:互联网 发布:数据库删除重复数据 编辑:程序博客网 时间:2024/05/14 22:22

转自 http://www.cnblogs.com/renji/archive/2007/12/03/resharper_find.html

摘要

快速代码定位的核心就是三个功能:

  • 转到定义:Ctrl+B;
  • 查找所有使用:Alt+F7;
  • 从这里浏览:Ctrl+Shift+G.
转到定义

当你的光标在一个变量上时,按下Ctrl+B就会跳转到这个变量声明的地方。这可能是某一个字段,某一个方法的参数或者一个局部变量。个人用F12更方便。

当你的光标在一个类型上时,按下Ctrl+B可能发生两种情况,一是当这个类型的定义在你的项目中有源代码时,会跳转到这个源代码文件。如果没有源代码,则会打开一个对象浏览器。有一些使用者更期望跳转到元数据文件,但是我更喜欢对象浏览器,这样类型的公有属性、方法、事件都被列出来了,可以一目了然。就我的经验,列表永远比下拉框,选框更加易于查找。


但是这个功能有一个副作用,多年使用Windows的经验告诉我们,按住Ctrl的时候点鼠标左键,默认的操作是选中一整个单词,但是在安装了Resharper以后,这个操作实际上等于Ctrl+B,也就是说可能你想选择这个变量的名字,然后复制到别处去,可是却跳转到了这个变量的声明处,不由得让你一阵恼火。目前我还没有找到选项屏蔽掉这个操作,所以,只有用鼠标双击来选择单词了(提示:如果跳转到了别处,想返回,按Ctrl+-)

 

查找所有使用

Alt+F7,有感觉吗?不错,就是TotalCommand里搜索的快捷键,没有用过TC,还在用资源管理器?那可不应该。简而言之, Alt+F7将你光标所在位置的变量的所有使用以列表的方式显示出来,显示结果的窗体可以像其他窗体那样停靠。

它的优点包括:

  • 可以从所有使用中挑选只显示read usage或者write usage,有时我们只是想知道某个变量在哪里被改变了。找到的位置前的图标也告诉你这点。
  • 可以在下方预览,即使我们列出所有使用,也不想跳转到每个使用它的地方,这时预览可以帮你大忙。
  • 当你在代码编辑器中改动了某些使用时,比如删除了某行,那么在查找结果的窗体中,会用删除线表示出来。
  • 默认的是寻找解决方案中所有的使用,并且按照命名空间来组织,非常便于选择。

我现在已经记不起来在没有Alt+F7之前我是怎么查找的。反正现在我几乎不怎么样Ctrl+F了,除非我忘记了某个变量的名字。如果是这样,多半这个名字需要refactor,那也是Resharper的另一大块功能所在。也许有人对这个功能嗤之以鼻,但是用过CAB的人都知道,订阅和发布某个事件的签名,完全是字符串,如果你不用搜索来找到它的话,你都不知道这个控件的鼠标点下去,到底有多少个处理程序在背后开始工作了。用了Alt+F7来搜索这个字符串,等于在查找背后所有的调用者。

不过提示你,当光标停留在一个类型上时,要慎用Alt+F7,假设是一个string,你应该能想象到得找到多少个使用。

从这里浏览

实在不知道用什么中文来翻译这个navigate from here...,只好直译了。你可能在这些时候需要它:

当你要找这个类的所有继承者,或者接口的所有实现者时,按住Ctrl+Shift+G会弹出一个菜单,其中有Inheritor,用方向键来选择并回车,如果只有一个实现,那么直接跳转到这个实现,如果有多于一个,或者因为使用了partial分布到好几个文件中,会再弹出一个菜单来供你选择。与此类似,如果你选择base,则会跳转到基类或接口中去。

同时这个功能也囊括了前面的转到定义和查找使用,如果你偷懒的话,只记住这个就可以了,虽然Ctrl+Shift+G的快捷键有一点生僻,但是用着用着你就发现顺手了。

这个功能不可不谓是用来熟悉一套框架的利器,可以让你迅速找到某个接口的所有实现,和Alt+F7合用,可以让你在一个庞大的解决方案中如鱼得水。

下一次,我们该来讲一讲威力无比的Alt+回车了

原创粉丝点击