Android Studio快捷键
2016-07-21 09:55
253 查看
一般来说键盘用的越多鼠标用的越少,那么写起代码来效率就越高;常见的快捷键想必大家都已经掌握,接下来我就分享一些你可能不知道的但确非常实用的快捷键。
下文所有快捷键基于如下keymap
Windows: Default
Linux: Default
OSX: Mac OSX 10.5+
![](http://upload-images.jianshu.io/upload_images/454052-3a9cfe3ebb4e3e39.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动补全enter和tab区别
在使用自动补全的时候
使用
使用
这种情况我们还是会经常遇到的,比如要替换一个资源的ID(R.id.a_xxx_xxx),想必大多数人都是先选择
快捷键:(在补全的时候)
![](http://upload-images.jianshu.io/upload_images/454052-35b818b381513154.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
返回编辑器窗口
正在写代码的时候,很多操作会让焦点脱离编辑器;比如Find Usage, Logcat, 切换到项目结构视图,类型继承树等;如果视图切换了如何快速切回编辑器继续写代码呢?简单的鼠标点一下编辑器就可以了,但其实还有两种选择:
个人喜欢第二种;Find Usage完毕了,
![](http://upload-images.jianshu.io/upload_images/454052-50311032370ae471.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
返回最后打开的工具窗口
接上面那个功能,如果你
快捷键:
![](http://upload-images.jianshu.io/upload_images/454052-381e3586b5fa575e.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
使用数字快捷打开窗口
有木有发现有的窗口上面有个数字?这样的窗口(工具窗)我们可以快捷打开!
Mac:
windows/Linux:
![](http://upload-images.jianshu.io/upload_images/454052-825b6fc6ed48426c.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
窗口切换
上面的切换还是无法满足你的要求?记得Mac的
在这个切换窗口打开的时候,你可以直接按数字切换到对应的工具窗口,或者输入字母搜索右边的编辑器窗口,如果你需要关闭某个窗口,在上面按
快捷键:
![](http://upload-images.jianshu.io/upload_images/454052-9c817bf4cb42b90a.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
隐藏所有窗口
好了学了那么多打开窗口的技能,如果你想关闭那些乱七八糟的窗口,安安静静写代码应该怎么办?
Mac:
windows/Linux:
如果需要恢复所有窗口,再按一次这个快捷键即可。
![](http://upload-images.jianshu.io/upload_images/454052-c5c5b3fc98875c33.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
参数提示
这个功能估计很多人知道了,但是还是提一下。在自动补全以后,如果某个方法参数超级长,你不知道参数是什么怎么办?可以试试这个。
Mac:
win/Linux:
![](http://upload-images.jianshu.io/upload_images/454052-41165dc69d4f020f.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动生成变量
作为一门静态类型语言,Java是有一定的类型推导能力的;那么你是否经常书写:
其实大可不必写那些恼火的类型声明的,一看就知道
Mac:
Win/Linux:
有的童鞋可能会问了:我使用
![](http://upload-images.jianshu.io/upload_images/454052-f392b5af6e0b4139.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动提取参数
有时候你正在写一个方法的时候发现。哎哟,这个变量最好是当作参数传递进来啊;要做成这么一件事,你必须把这个方法内部所有使用这个局部变量的地方替换,把所有调用这个函数的地方添加参数,繁琐至极!好了有了这个你可以随便玩了:
Mac:
Win/Linux:
当然,如果你想保留原来的方法,只是搞一个参数不同的方法(重载)出来,可以在弹出的那个对话框里面打勾。
![](http://upload-images.jianshu.io/upload_images/454052-ac998c63c946e1ee.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动提取方法
写代码的时候是否会发现不知不觉的这个方法已经太长了,适合分解然后提取出一个个子方法;或者是重构的时候看到一个一两千的函数,你是不是头都大了?一般情况下,我们都是把要提取的代码copy出来,然后写一个方法(还要什么该死的方法签名)然后把这段代码复制进来;其实这个过程是机械的,完全可以由IDE完成:
Mac:
Win/Linux:
如果想改变方法的签名,在对话框里面选择你需要的就可以了~
上面提到了三个快捷键其实是比较类似的,如何记忆呢?
首先组合键都是
然后提取变量Variable=V,参数Parameters=P,方法Method=M
![](http://upload-images.jianshu.io/upload_images/454052-8e458a823082bf2c.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
内联
好了学会了上面那几个快捷键,万一玩high了,比如提取了太多的方法,想“弄回去”,该怎么办呢?这个操作叫他
Mac:
Win/Linux:
上面那个图只是参考,其实不仅可以作用于变量,还可以是方法/参数,个人觉得方法inline比较有用。
![](http://upload-images.jianshu.io/upload_images/454052-826a912df465a961.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
万能重构键
静态类型语言重构起来相对容易的,但是通常修改一个地方会牵扯到很多别的地方,我们只有一处一处找到这些编译错误然后手动修复。其实有好多工作是可以自动完成的,比如删除某个方法;先确认有没有人调用(Alt + F7),没有的话把方法体删了,有的话去看看调用的地方再决定怎么办。
但是重构的操作实在是太多了!我们没有办法也没有必要一个个记住,知道这个快捷键即可,我叫他万能重构键:
Mac :
Win/Linux:
在Win/Linux上可以考虑把这个快捷键改一下键,一下按四个键臣妾很难做到啊。。
这个重构菜单每一个功能都可以自己去尝试一下,使用之后不好用你来打我。
![](http://upload-images.jianshu.io/upload_images/454052-2c3406f257c7dd3c.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
重命名
好了介绍了那么多貌似很高端的玩意,来个大部分人都知道的吧。有时候你发现有个变量名字取得有问题,或者没文化的队友/自己单词拼错了咋办?需要把所有用到这个变量的地方重新命名,小case!
快捷键:
![](http://upload-images.jianshu.io/upload_images/454052-12775bf0bc6bea62.gif)
Select In..
有没有这样的场景:你在Android Studio打开了一个图片文件(或者别的文件),想在资源浏览器里面查看这图片;在Eclipse里面我想大部分的人是
View上面的那个小圆坐标;用这个快捷键鼠标就能搞定。
快捷键:
弹出的菜单有一系列的选项;按对应的数字就可以选择;其他的菜单有什么功能可以自己尝试一下。
![](http://upload-images.jianshu.io/upload_images/454052-58821a05939c5b59.gif)
拓展选择
这个功能应该很多人都知道;但还是说明一下,因为跟下面两个功能跟这个结合起来才有威力。这个功能太强大了,自己去按几遍就能想到很多使用场景了;我相信有了这个功能,你使用鼠标的机会会少很多。
Mac:
Win/Linux:
![](http://upload-images.jianshu.io/upload_images/454052-16e5c3e7772f2a85.gif)
Surround With
如果你想把一段代码使用
首先用光标定位到代码块开头,写上
Mac:
Win/Linux:
可以使用上面的拓展选择选择你需要的代码块,然后使用这个功能Surround With;如果你什么都不选择的话,那么默认选择的是光标所在行。
![](http://upload-images.jianshu.io/upload_images/454052-037e670f36ffb32e.gif)
Unwrap
这个功能跟上面提到的是一对,有了Surround With自然就有Unsurround With;使用情况没有上面那个那么多,但是好歹一对,一起介绍吧。
![](http://upload-images.jianshu.io/upload_images/454052-6dddc149babc8e4f.gif)
highlight something
有时候看代码的时候,看到某个变量想知道哪里使用了它;你还在用肉眼查找吗?或者你杀鸡用牛刀
Mac:
Win/Linux:
这个键功能远不止这个!
如果你高亮
高亮某个类的
高亮
如果不想要高亮了,按下Esc就行。
![](http://upload-images.jianshu.io/upload_images/454052-13524e8120e3a26c.gif)
方法调用树
在看源码的时候,你还是使用
快捷键:
![](http://upload-images.jianshu.io/upload_images/454052-e370033dbd35145c.gif)
万能快捷键
记得之前提到过一个万能重构键, 有关重构的一切操作都可通过它完成。那么Android Studio这么快捷键,这么多功能,臣妾怎么可能都记住!要是有万能钥匙就好了!That's it!
使用这个快捷键,你想到什么功能,打开它搜索就可以了;打个比方,我想看看Java的
![](http://upload-images.jianshu.io/upload_images/454052-41de1a47f9f04cbb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
PS:(我用的Intellij IDEA,Android Studio没有集成bytecode功能,可能搜索不到)
好了,其实所有的快捷键的功能都可以用这个搜索到~~实在记不起来也就用万能键吧!
下文所有快捷键基于如下keymap
Windows: Default
Linux: Default
OSX: Mac OSX 10.5+
自动补全的时候是Enter还是Tab?
![](http://upload-images.jianshu.io/upload_images/454052-3a9cfe3ebb4e3e39.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动补全enter和tab区别
在使用自动补全的时候
Enter和
Tab的行为还是有一些细微的区别的:
使用
Enter会补全你选择的语句
使用
Tab的话,会替换掉你之前在这里的内容(删除后面的语句直到遇到点号,逗号,分号)
这种情况我们还是会经常遇到的,比如要替换一个资源的ID(R.id.a_xxx_xxx),想必大多数人都是先选择
a.xxx_xxx删除,然后输入新的内容,或者相反;其实这时候,用
Tab才是最优雅的方式。
快捷键:(在补全的时候)
Enter/Tab
返回编辑器窗口
![](http://upload-images.jianshu.io/upload_images/454052-35b818b381513154.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
返回编辑器窗口
正在写代码的时候,很多操作会让焦点脱离编辑器;比如Find Usage, Logcat, 切换到项目结构视图,类型继承树等;如果视图切换了如何快速切回编辑器继续写代码呢?简单的鼠标点一下编辑器就可以了,但其实还有两种选择:
Esc: 让编辑器窗口获取焦点,这时候就可以输入代码了
Shift + Esc: 这个会让编辑器获取焦点,并且顺手帮你把刚刚打开的窗口关闭了。
个人喜欢第二种;Find Usage完毕了,
Shift + Esc, 优雅~
Esc: 返回编辑器
Shift + Esc: 返回编辑器并关闭当前窗口
返回上次打开的工具窗口
![](http://upload-images.jianshu.io/upload_images/454052-50311032370ae471.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
返回最后打开的工具窗口
接上面那个功能,如果你
Shift + Esc写了一会儿代码,发现又需要打开刚刚的窗口怎么办?这种场景通常发生在Logcat这个Tol Window上,看完了日志,写代码,写完代码看日志;如何快速切换?
快捷键:
F12
快捷打开窗口
![](http://upload-images.jianshu.io/upload_images/454052-381e3586b5fa575e.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
使用数字快捷打开窗口
有木有发现有的窗口上面有个数字?这样的窗口(工具窗)我们可以快捷打开!
Mac:
Cmd + 数字
windows/Linux:
Alt + 数字
任意窗口切换
![](http://upload-images.jianshu.io/upload_images/454052-825b6fc6ed48426c.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
窗口切换
上面的切换还是无法满足你的要求?记得Mac的
Cmd + Tab,Windows的
Alt/Win + Tab吗?Android Studio也有这个类似的功能,可以让你切换到任意窗口!
在这个切换窗口打开的时候,你可以直接按数字切换到对应的工具窗口,或者输入字母搜索右边的编辑器窗口,如果你需要关闭某个窗口,在上面按
BackSpace即可。
快捷键:
Ctrl + Tab
隐藏所有窗口
![](http://upload-images.jianshu.io/upload_images/454052-9c817bf4cb42b90a.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
隐藏所有窗口
好了学了那么多打开窗口的技能,如果你想关闭那些乱七八糟的窗口,安安静静写代码应该怎么办?
Mac:
CMD + Shift + F12
windows/Linux:
Ctrl + shift + F12
如果需要恢复所有窗口,再按一次这个快捷键即可。
参数提示
![](http://upload-images.jianshu.io/upload_images/454052-c5c5b3fc98875c33.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
参数提示
这个功能估计很多人知道了,但是还是提一下。在自动补全以后,如果某个方法参数超级长,你不知道参数是什么怎么办?可以试试这个。
Mac:
CMD + P
win/Linux:
Ctrl + P
自动生成变量
![](http://upload-images.jianshu.io/upload_images/454052-41165dc69d4f020f.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动生成变量
作为一门静态类型语言,Java是有一定的类型推导能力的;那么你是否经常书写:
String testStr = "testStr"; List<String> testStrings = new ArrayList<String>();
其实大可不必写那些恼火的类型声明的,一看就知道
testStr, testStrings就知道是什么类型,再这么干不就是废话么!好在IDEA给了我们这个能力。尝试一下这个快捷键吧,会给你惊喜。
Mac:
Cmd + Alt + V
Win/Linux:
Ctrl + Alt + V
有的童鞋可能会问了:我使用
ArrayList, HashMap的时候,习惯类型声明为
List,Map等接口,这个自动生成的类型声明还是具体的实现啊,怎么办?这一点IDE已经帮你想到了,试试
shift + tab,他会给你一个可以选择的类型列表~
自动提取参数
![](http://upload-images.jianshu.io/upload_images/454052-f392b5af6e0b4139.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动提取参数
有时候你正在写一个方法的时候发现。哎哟,这个变量最好是当作参数传递进来啊;要做成这么一件事,你必须把这个方法内部所有使用这个局部变量的地方替换,把所有调用这个函数的地方添加参数,繁琐至极!好了有了这个你可以随便玩了:
Mac:
Cmd + Alt + P
Win/Linux:
Ctrl + Alt + P
当然,如果你想保留原来的方法,只是搞一个参数不同的方法(重载)出来,可以在弹出的那个对话框里面打勾。
自动提取方法
![](http://upload-images.jianshu.io/upload_images/454052-ac998c63c946e1ee.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
自动提取方法
写代码的时候是否会发现不知不觉的这个方法已经太长了,适合分解然后提取出一个个子方法;或者是重构的时候看到一个一两千的函数,你是不是头都大了?一般情况下,我们都是把要提取的代码copy出来,然后写一个方法(还要什么该死的方法签名)然后把这段代码复制进来;其实这个过程是机械的,完全可以由IDE完成:
Mac:
Cmd + Alt + M
Win/Linux:
Ctrl + Alt + M
如果想改变方法的签名,在对话框里面选择你需要的就可以了~
上面提到了三个快捷键其实是比较类似的,如何记忆呢?
首先组合键都是
Cmd/Ctrl + Alt
然后提取变量Variable=V,参数Parameters=P,方法Method=M
内联变量/参数/方法
![](http://upload-images.jianshu.io/upload_images/454052-8e458a823082bf2c.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
内联
好了学会了上面那几个快捷键,万一玩high了,比如提取了太多的方法,想“弄回去”,该怎么办呢?这个操作叫他
Inline..:
Mac:
Cmd + Alt + N
Win/Linux:
Ctrl + Alt + M
上面那个图只是参考,其实不仅可以作用于变量,还可以是方法/参数,个人觉得方法inline比较有用。
万能重构键
![](http://upload-images.jianshu.io/upload_images/454052-826a912df465a961.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
万能重构键
静态类型语言重构起来相对容易的,但是通常修改一个地方会牵扯到很多别的地方,我们只有一处一处找到这些编译错误然后手动修复。其实有好多工作是可以自动完成的,比如删除某个方法;先确认有没有人调用(Alt + F7),没有的话把方法体删了,有的话去看看调用的地方再决定怎么办。
但是重构的操作实在是太多了!我们没有办法也没有必要一个个记住,知道这个快捷键即可,我叫他万能重构键:
Mac :
Ctrl + T
Win/Linux:
Ctrl + Alt + Shift + T
在Win/Linux上可以考虑把这个快捷键改一下键,一下按四个键臣妾很难做到啊。。
这个重构菜单每一个功能都可以自己去尝试一下,使用之后不好用你来打我。
重命名
![](http://upload-images.jianshu.io/upload_images/454052-2c3406f257c7dd3c.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg)
重命名
好了介绍了那么多貌似很高端的玩意,来个大部分人都知道的吧。有时候你发现有个变量名字取得有问题,或者没文化的队友/自己单词拼错了咋办?需要把所有用到这个变量的地方重新命名,小case!
快捷键:
shift + F6
Select In..
说实话,想不出一个比较好的翻译 :P 干脆使用英文吧。![](http://upload-images.jianshu.io/upload_images/454052-12775bf0bc6bea62.gif)
Select In..
有没有这样的场景:你在Android Studio打开了一个图片文件(或者别的文件),想在资源浏览器里面查看这图片;在Eclipse里面我想大部分的人是
Alt + Enter进入文件属性复制地址,然后在系统资源管理器里面打开;或者装一个EasyExplore插件。在Android Studio里面,这是内建支持的!而且还不止如此!比如你想看看某个文件在包的哪个目录,通常是不是点击Project
View上面的那个小圆坐标;用这个快捷键鼠标就能搞定。
快捷键:
Alt + F1
弹出的菜单有一系列的选项;按对应的数字就可以选择;其他的菜单有什么功能可以自己尝试一下。
拓展选择
![](http://upload-images.jianshu.io/upload_images/454052-58821a05939c5b59.gif)
拓展选择
这个功能应该很多人都知道;但还是说明一下,因为跟下面两个功能跟这个结合起来才有威力。这个功能太强大了,自己去按几遍就能想到很多使用场景了;我相信有了这个功能,你使用鼠标的机会会少很多。
Mac:
Alt + up/down
Win/Linux:
ctrl + w / ctrl + shift + w
Surround With..
![](http://upload-images.jianshu.io/upload_images/454052-16e5c3e7772f2a85.gif)
Surround With
如果你想把一段代码使用
if语句包起来;又或者使用
try包围一段可能有运行时异常的代码,你会怎么干?
首先用光标定位到代码块开头,写上
try {然后,光标代码块末尾加上
} catch (XXXRuntimeException e) {// todo}?可以试试这个快捷键。
Mac:
cmd + alt + t
Win/Linux:
ctrl + alt + t
可以使用上面的拓展选择选择你需要的代码块,然后使用这个功能Surround With;如果你什么都不选择的话,那么默认选择的是光标所在行。
Unwrap/Remove
![](http://upload-images.jianshu.io/upload_images/454052-037e670f36ffb32e.gif)
Unwrap
这个功能跟上面提到的是一对,有了Surround With自然就有Unsurround With;使用情况没有上面那个那么多,但是好歹一对,一起介绍吧。
高亮某东西
![](http://upload-images.jianshu.io/upload_images/454052-6dddc149babc8e4f.gif)
highlight something
有时候看代码的时候,看到某个变量想知道哪里使用了它;你还在用肉眼查找吗?或者你杀鸡用牛刀
Find Usgae?其实你的需求就是把这个变量全部给我打个标签,我想直观的知道它在哪。
Mac:
cmd + shift + F7
Win/Linux:
ctrl + shift + F7
这个键功能远不止这个!
如果你高亮
return或者
throw,那么会把这个方法所有的返回点高亮出来!
高亮某个类的
extends或者
implements会把这个类Override的方法高亮出来
高亮
import会把使用的地方显示出来
如果不想要高亮了,按下Esc就行。
显示方法调用树
![](http://upload-images.jianshu.io/upload_images/454052-13524e8120e3a26c.gif)
方法调用树
在看源码的时候,你还是使用
alt + F7和
ctrl + B在各个类之间来回穿梭吗?其实好多时候你就是想知道这个调用结构是怎么样的而已;谁是怎么一步一步滴调用谁的;这个快捷键会给你一个调用树。有了这个大菊观,继续探讨就很容易了。
快捷键:
ctrl + alt + h
万能快捷键
![](http://upload-images.jianshu.io/upload_images/454052-e370033dbd35145c.gif)
万能快捷键
记得之前提到过一个万能重构键, 有关重构的一切操作都可通过它完成。那么Android Studio这么快捷键,这么多功能,臣妾怎么可能都记住!要是有万能钥匙就好了!That's it!
使用这个快捷键,你想到什么功能,打开它搜索就可以了;打个比方,我想看看Java的
for each循环和普通的
for循环底层是不是同一个实现;那么我就需要看虚拟机字节码了;我记得有这个功能但是不知道快捷键是啥;OK,
Cmd + shift + A,输入
bytecode:
![](http://upload-images.jianshu.io/upload_images/454052-41de1a47f9f04cbb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
PS:(我用的Intellij IDEA,Android Studio没有集成bytecode功能,可能搜索不到)
好了,其实所有的快捷键的功能都可以用这个搜索到~~实在记不起来也就用万能键吧!
相关文章推荐
- 详解Android中AsyncTask的使用
- Android studio中.so文件的提交
- Android的两种上下文的区别
- Android Studio 使用Gradle引入第三方库文件的总结
- Android学习进阶和IoC
- 收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation
- Android 6.0下出错: UnsatisfiedLinkError: dlopen failed . text relocations
- Android API之ExternalStorage操作
- Android中国开发精英必须知道的内容
- 关于shape
- android---重写TextView实现跑马灯
- swiprefreshlayout主动显示小圆圈
- Android View 测量
- Service 服务
- Retrofit中文说明
- xUtils 中的BitmapUtils 一些注释
- Android监听程序的安装和卸载
- Android 5.0 API
- Android 单位px、dp、sp转换工具类
- Android Lollipop