一.代码查找技巧

1. 书签(Bookmarks)

描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处。

调用:Menu → Navigate → Bookmarks

快捷键:

添加/移除书签:F3(OS X) 、F11(Windows/Linux);

添加/移除书签(带标记):Alt + F3(OS X)、Ctrl + F11(Windows/Linux);

显示全部书签:Cmd + F3(OS X) 、Shift + F11(Windows/Linux),显示所有的书签列表,并且是可以搜索的。

上一个/下一个书签:无,可以在设置中设置快捷键。

2. 折叠/展开代码块(Collapse Expand Code Block)

描述:该操作提供一种方法,让你隐藏你不关心的部分代码,以一种较为简洁的格式显示关键代码。

一个有意思的用法是隐藏匿名内部类的代码,让其看起来像一个Lambda表达式。

快捷键:Cmd + “+”/”-“(OS X)、Ctrl + Shift + “+”/”-“(Windows/Linux);

3.上下文信息(Context Info)

描述:当前作用域定义超过滚动区域,执行该操作将显示所在的上下文信息,通常它显示的是类名或者内部类类名或者当前所在的方法名。该操作在xml文件中同样适用。

调用:Menu → View → Context Info

快捷键:Alt + Q (Windows/Linux)

4. 查找操作(Find Action)

描述:输入某个操作的名称,快速查找,对于没有快捷键的部分操作这是一个很有用的技巧。

快捷键:Cmd +Shift + A(OS X)、Ctrl + Shift + A(Windows/Linux);

5.在方法和内部类之间跳转(Move Between Methods and Inner Classes)

描述:该操作让光标在当前文件的方法或内部类的名字间跳转。

调用:Navigate → Next Method/Previous Method;

快捷键:Ctrl + Up/Down(OS X)、Alt + Up/Down(Windows/Linux);

6.定位到嵌套文件(Navigate to Nested File)

描述:有时你有一堆存放在不同目录下的同名文件,例如不同模块下的AndroidManifest.xml文件,当你想定位到其中的一个文件,你会得到一堆搜索结果,

你还得辨认哪个才是你需要的。通过在检索框中输入部分路径的前缀,并添加斜杠号,你就可以在第一次尝试的时候就找到正确的那个

快捷键:Shift + Cmd + O(OS X)、Shift + Ctrl + N(Windows/Linux);

7. 定位到父类(Navigate to parent)

描述:如果光标是在一个继承父类重写的方法里,这个操作将定位到父类实现的地方。如果光标是在类名上,则定位到父类类名。

Menu → Navigate → Super Class/Method

快捷键:Cmd + U(OS X)、Ctrl + U(Windows/Linux);

8. 在外部打开文件(Open File Externally)

描述:通过这个快捷键,简单地点击Tab,就可以打开当前文件所在的位置或者该文件的任意上层路径。

快捷键:Cmd + 单击Tab(OS X)、Ctrl + 点击Tab(Windows/Linux);

9.参数信息(Parameter Info)

描述:这个操作将显示和你在方法声明处写一样的参数列表,当你想看某个存在的方法的参数,这是一个很有用的操作。光标下的参数显示为黄色,如果没有参数显示黄色,意味着你的方法调用是无效的,很可能是某个参数分配不对。(例如一个浮点数赋值给了整型参数)。如果你正在写一个方法调用,突然离开编辑的地方,再返回的时候,输入一个逗号,就可以重新触发参数信息。

快捷键:Cmd + P(OS X)、Ctrl + p(Windows/Linux);

10. 快速查看定义(Quick Definition Lookup)

描述:你曾经是否想查看一个方法或者类的具体实现,但是不想离开当前界面? 该操作可以帮你搞定。比如查看父类方法的实现

快捷键:Alt + Space / Cmd + Y(OS X)、Ctrl + Shift + I(Windows/Linux)

11.查看当前类的结构

ctrl+F12

12查看类的继承结构关系

ctrl+h

二.代码编码技巧

1.列选择/块选择(Column Selection).

alt+鼠标左键  批量编码

2.语句补全(Complete Statement)

描述:这个方法将会生成缺失的代码来补全语句,常用的使用场景如下:

在行末添加一个分号,即使光标不在行末;

为if、while、for 语句生成圆括号和大括号;

方法声明后,添加大括号;

调用:Menu → Edit → Compelete Current Statement

快捷键:Cmd + Shift + Enter(OS X)、Ctrl + Shift + Enter(Windows/Linux);

3. 删除行(Delete Line)

描述:如果没选中,则删除光标所在行,如果选中,则会删除选中所在的所有行。

快捷键:Cmd + Delete(OS X)、Ctrl + Y(Windows/Linux)

4.行复制(Duplicate Line)

描述:复制当前行,并粘贴到下一行,这个操作不会影响剪贴板的内容。这个命令配合移动行快捷键非常有用。

快捷键:Cmd + D(OS X)、Ctrl + D(Windows/Linux)

5.使用Enter和Tab进行代码补全的差别(Enter vs Tab for Code Completion)

描述:代码补全时,可以使用Enter或Tab来进行补全操作,但是两者是有差别的。

使用Enter时:从光标处插入补全的代码,对原来的代码不做任何操作。

使用Tab时:从光标处插入补全的代码,并删除后面的代码,直到遇到点号、圆括号、分号或空格为止。

6.提取方法(Extract Method)

描述:提取一段代码块,生成一个新的方法。当你发现某个方法里面过于复杂,需要将某一段代码提取成单独的方法时,该技巧是很有用的。

调用:Menu → Refactor → Extract → Method

快捷键:Cmd + Alt + M(OS X)、Ctrl + Alt + M(Windows/Linux);

7.动态模板(Live Templates)

setting-Editor-Live templates中的系统内置的模板,重点是AndroidComments和AndroidLog

还有自定义设置的模板,后面会有栗子。

8.上下移动行(Move Lines Up Down)

描述:不需要复制粘贴就可以上下移动行了。

快捷键:Alt + Shift + Up/Down;

9.移动方法(Move Methods)

描述:这个操作和移动行操作很类似,不过该操作是应用于整个方法的,在不需要复制、粘贴的情况下,就可以将整个方法块移动到另一个方法的前面或后面。该操作的实际叫做“移动语句”,这意味着你可以移动任何类型的语句,你可以方便地调整字段或内部类的顺序。

快捷键:Cmd + Alt + Up/Down(OS X)、Ctrl + Shift + Up/Down(Windows/Linux

10.重命名(Rename)

描述:你可以通过该操作重命名变量、字段、方法、类、包。当然了,该操作会确保重命名对上下文有意义,不会无脑替换掉所有文件中的名字;

快捷键:Shift + F6

11.分号/点 补全(Semicolon Dot Completion)

描述:代码补全这个功能太棒啦!我们大概都对以下这种情况很熟悉:开始输入点什么东西,接着从IDE得到一些建议的选项,

然后通过Enter或者Tab来选择我们想要的补全代码。其实还有另外一种方法来选择补全的代码:我们可以输入一个点(.)或者一个分号(;)。

这样就会完成补全,添加所选字符。这在结束一条语句补全或者快速链式调用方法的时候特别有用。

注意点:如果你要代码补全的方法需要参数,这些参数会被略过。

12.包裹代码(Surround With)

描述: 该操作可以用特定代码结构包裹住选中的代码块,通常是if语句,循环,try/catch语句或者runnable语句。 如果你没有选中任何东西,该操作会包裹当前一整行。

快捷键:Cmd + Alt + T(OS X)、Ctrl + Alt + T(Windows/Linux)

13.移除包裹代码(Unwrap Remove)

描述:该操作会移除周围的代码,它可能是一条if语句,一个while循环,一个try/catch语句甚至是一个runnable语句。该操作恰恰和包裹代码(Surround With)相反。

快捷键:Cmd + Shift + Delete(OS X)、Ctrl + Shift + Delete(Windows/Linux)

14.后缀补全

setting-Editor-General-Postfix Completion

这些死记吧

15.重写方法,实现接口,get和set方法实现等:

alt+insert 都可以实现

16.快速实现硬编码的字符串定义到string.xml中:

alt+enter

三.调试技巧

不用太多,Log打印和断点调试即可。

最后,给出几个自己常用的live templates模板:

单例实现之double check:

private static volatile $class$ INSTANCE = null;

private $class$(){

}

public static $class$ getInstance(){

if (INSTANCE == null) {

synchronized ($class$.class) {

if (INSTANCE == null) {

INSTANCE = new $class$();

}

}

}

return INSTANCE;

}

单例实现之静态内部类:

private $class$(){

}

private static class SingletonInstance {

private static $class$ INSTANCE = new $class$();

}

public static $class$ getInstance(){

return SingletonInstance.INSTANCE;

}

click事件实现:

public void onClick(View view) {

switch (view.getId()) {

case R.id.$resId$:

$content$

break;

default:

break;

}

}

switch代码块:

switch ($content$) {

case $value$:

$code$

break;

default:

break;

}

String对象判空:

TextUtils.isEmpty($content$)

综上几个模板的命名自己随意定义,怎么添加请自己百毒吧!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐