idea高级使用技巧,对不起我来晚了(基于mac IDEA2019)

页面介绍

介绍

窗口 作用
file 项目的创建,以及该软件的设置,导入导出,配置路径等;
edit 文本内心信息操作
view 是视图,是你视野中能够看到窗口
Navigate 在项目工程中跳转,快速找到方法
code 对你的源码文件进行操作
analyze 对你得源码进行分析,看类与类的依赖关系
Refactor 快捷操作:比如抽取静态类,抽取函数,抽取抽象方法
Build 是为了构建工程
run 运行
Tools 提供一些工具
CVS 是指的版本控制

快捷键

总结:
alt 数字到 两边的窗口
esc 返回到编写代码窗口

如下快捷键mac中对应Cmd 数字

功能 快捷键
1.Project Alt 1
7.Structure Alt 7
2.Favorites Alt 2
4.Run Alt 4
5.Debug Alt 5
6.TODO Alt 6
Terminal Opt F12

具体快捷键,可以在 View -> Tool Windows里面找到

必杀技

作用 英文 快捷键 备注
查找操作 菜单 -> Help -> Find Action Ctrl Shift A 所有的快捷键都可以通过它找到;所有的设置也能从这里直接跳转过去

基本上IDEA上所有出现的英文都可以用这个试一下(或者你也找不到英文是啥,英文好点的话可以直接意淫,说不定有意想不到的效果)。
如果知道快捷键但是不知道对应的英文是什么的话
image-20200113104121336

高效定位代码

无处不在的跳转

作用 英文 快捷键
查找操作 菜单 -> Help -> Find Action Ctrl Shift A
跳转窗口 window -> next project window windows opt cmd `
查找最近浏览文件 Recent Files Cmd E
查找最近修改的文件 Recent Edited Files Cmd Shift E
跳转到上次修改的地方 菜单->Navigate->Last Edit Location Cmd Shift Delete
利用Ctrl (数字)跳转(阅读源码的时候) Bookmarks(书签) Ctrl Shift 数字(打标签)再次点击取消、Ctrl 数字(跳转到第n个标签)
收藏类或方法等 右下角Favorites(Cmd 2)查看,名字 Add to Favorites Opt Shift F
上次浏览的地方 Navigate->Back(Forward) Cmd Opt ←(→)
编辑区跳转到文件区 MAC:Cmd 1 /window:Alt 1
返回到编辑区 ESC

字符串切换插件 emacsIDEAs (能够在当前文件相同的字母开头的单词间跳动)(感觉一般不会去用)
Cmd Shift A->输入plugins->install
修改插件快捷键
image-20200112163024216

利用vim进行多编辑区跳转(忽略,基本不用)

精准搜索

功能 英文 快捷键
搜索类 Navigat -> Class Cmd O
搜索文件 Navigat -> File Cmd Shift O
搜索符号(函数、属性) Navigat -> Symbol Opt Cmd O
搜索字符串 Edit -> Find -> Find in Path Cmd Cmd F

代码小助手们

列操作

功能 英文 快捷键
mac上选中单词 Move caret to next Opt Shift →
大小写切换 Edit -> Toggle Case Cmd Shift U
移到行首 Move caret to line Start Top 符号
移到行尾 Move caret to line End End 符号
选中每一行相同的 Edit -> Find -> Select All Occurrence Ctrl Cmd G

Mac中对应的按键

名称 符号 按键
Home Top 符号 fn ←,不过我记得是Cmd ←
End End 符号 fn →,不过我记得是Cmd →

Mac快捷键:
http://www.pc6.com/edu/81140.html
https://support.apple.com/zh-cn/guide/mac-help/cpmh0011/mac

例子:
如何将左边的字符串生成右边的枚举类?

image-20200112220108825首先通过批量操作的快捷键,然后操作第一行,移动到第二个单词例如:Continue,然后进行大小写转换,剪切,移动到行首,复制粘贴,然后左括号,然后移动到下个单词,然后到行尾,然后加上右括号,加。
然后格式化下代码就可以了。

Live Template

简介

什么是Template?
比如写java代码的Public static void main(String [] args){},使用Template只需要敲一个回车即可,并且光标会停留在需要的地方。
一些批量的操作就可以交给Template来做。

image-20200113073559637

这个东东除了psvm还有什么快捷的方法吗?

在哪里?

image-20200112221830693

新建分组
image-20200112221915012

image-20200112222640417

只需要写一个main,按tab键或者回车自动就生成了(具体是tab还其他可以在上图的右下角Expand with进行选择),如下图

image-20200112222806078

其他的小例子

public static final int DEFAULT_AGE = 21;,例如这种是非常耗时间的重复代码,就可以用Template,能够大幅度提升编码速度。

包括一般的public String这种也是重复性的代码,都可以用Template

psfi

var1和var2代表输入完了之后光标停留在var1,然后输入var1之后回车光标停留到var2,再按回车就到了行尾了。
image-20200112223408229

不要忘了选中define

简单注释加一起代码的操作

一般字段上面的简单注释也是可以用Template来搞的
image-20200112225048140

多么流畅的操作一气呵成
image-20200112225136773

postfix

简介

image-20200112225418105

如上的这个for循环,可以通过100.fori直接打出来
这看起来很像template,但是这里叫做postfix,意思就是输入输入一个数字之后输入一个.会有很多的提示,比如100.for
image-20200112225559014

这里直接通过Cmd Shift A直接跳转过去,叫做postfix completion
刚才的演示就是java环境中的fori,如下图。
看起来非常想Template,但是还是不一样的,就是它是不可编辑的不能新加功能。

image-20200112225954679

比较常用的postfix

for

sout

field

比如有如下的构造函数

image-20200112230744279

就会自动生成如下
image-20200112230938138

return

加入一个有返回值的函数,可以通过下面的语法完成return

image-20200112231219929

nn

image-20200112231408757

如上

if (name != null) {

}

这段代码可以通过name.nn快速生成。

alter enter

简介

英文:show intentions for node
当你不知道如果完成一段代码的时候,只需要Opt Enter就会智能提示

功能

自动创建函数

如下图,在main函数中调用没有的函数,通过Opt Enter能够自动创建函数,如下面的getName

image-20200112232723395

list replace

如图一个遍历list的方式,其实可以将光标到for上面,然后Opt Enter,replace为其他的遍历的格式

image-20200112233122238

字符串format或者build

加入有下面这段代码,String是如图拼接的

image-20200112233502065

我们就可以通过Opt Enter来转化为

image-20200112233547291

同样可以选择其他的选项对String进行优化,比如转化成StringBuilder
image-20200112233702659

实现接口

假如有如下的接口
image-20200112234028090

光标到接口名字上,Opt Enter,选择implement interface
image-20200112234121054

就会自动帮我们创建实现了这个接口的类,也自动实现了接口的方法

image-20200112234132615

单词拼写

单词拼写就是在写代码的时候可能有的单词拼写的不对,通过Opt Enter会帮我们提示正确的单词
image-20200112234423834

如上图,我的name写错了,下面是会出现波浪线的,通过Opt Enter然后点击change to会自动提示可能正确的单词。
image-20200112234529924

导包

image-20200112234627314

编写高质量代码

重构

重构变量

功能 英文 快捷键
重构变量 Refactor -> Rename Shift F6

image-20200113074008093

如上的这段代码,什么abc,什么bcd,都不知道什么意思,这个时候就需要给他们批量换个名字,有没有什么快捷的方式呢?
拿这个main演示下
image-20200113074351756

除了能够选择之外,还能够直接键入自己喜欢的名字。

重构方法

功能 英文 快捷键
重构方法 Refactor -> Change Signature Cmd F6

image-20200113075016435

上面的getSomeThing有一个参数,这里希望给他两个参数,怎么办?鼠标放到方法名上,Cmd F6

image-20200113075123056

image-20200113075142015

当然了还有一种更加快捷的方式,直接在调用的地方修改参数,然后通过Opt Enter,如下
image-20200113075254869

抽取

抽取变量

功能 英文 快捷键
抽取变量 Refactor -> Extract -> Variable Opt Cmd V

image-20200113075645245

如图这里的leesin重复了,可以通过快捷键把他抽取出来

image-20200113075755624

image-20200113075809924

抽取静态变量

功能 英文 快捷键
抽取静态变量 Opt Cmd C

image-20200113080000700

image-20200113080013540

抽取成员变量

功能 英文 快捷键
抽取成员变量 Opt Cmd F

image-20200113080111153

抽取方法参数

功能 英文 快捷键
抽取方法参数 Opt Cmd P

抽取成员变量为方法的参数

image-20200113080457988

image-20200113080509806

image-20200113080544079

抽取函数

将函数中部分代码抽取出来,变成一个新的函数

功能 英文 快捷键
抽取函数 Opt Cmd M

image-20200113080921088

会自动生成方法,且可以选择是否自动匹配相同的代码段应用如上的规则,可以看到我这里第二个也自动变成可如下抽取的方法。
image-20200113080946291

寻找修改轨迹

git的集成

如果在写代码的过程中不知道某一行的意思,但是不知道是谁提交的,那该怎么办呢?

右键选择Annotation
image-20200113081643739

就可以看到提交记录
鼠标放在上面就会出现对应的信息

image-20200113081807705

再次右键可以选择关闭它

image-20200113081716273

移动所有改动之处(找到)

功能 英文 快捷键
移动所有改动之处(找到) Previous Change Ctrl Opt Shift ↑

在被版本控制里面如果修改了部分代码你需要看下之前修改了哪些地方
比如有这样一个需求,你这次修改的地方都需要改一个字段怎么办?

通过上面的快捷键,就能够找到了,比如下面我删除了某些东西。

image-20200113085631356

然后就可以做相应的操作了。

撤销,包括单个和项目改动之处

功能 英文 快捷键
撤销,包括单个和项目改动之处 Cmd Opt Z

撤销某个操作

那像上面(在版本控制中)的我做了一个增加和删除的操作,怎么撤销呢?
光标移动那改动的那一行(左边会有标志),Cmd Opt Z
找到这个快捷键
image-20200113090203694

撤销整个文件

如何放弃修改整个文件?
在没有修改的地方Cmd Opt Z

image-20200113090344019

撤销整个文件夹或者包

如果希望撤销整个文件夹或者包呢?
那就在左边的窗口,点击文件夹或者包,按住Cmd Opt Z

Local History

当项目没有被版本控制的时候,在本地也会有一个版本控制
Cmd Shift A搜获 local history
image-20200113090829854

会出现一个窗口

Show History

image-20200113090957928

Put Label

其实和git commit类似,当你没有版本控制的时候,希望把当前的更改提交一个commit,在idea中是一个label。
比如在idea中更改了一些东西,然后按put label,输入自己的名字,然后在local history中进行查看,就能看到自己的label中修改的东西,好像真的和git commit蛮像的
image-20200113091253560

关联一切

Spring的关联

image-20200113091942892

如图这个Service是被实现的呢?具体是哪个?
Cmd ;
image-20200113092130934

选中你的配置文件
image-20200113092241187

然后发现代码左边有两个小东西,点击能够直接跳转到对应的类中
image-20200113092324291

包括上面的图标,点击能够知道当前的类是在哪里被扫描到的
然后就到了如下的图:

image-20200113092401439

发现这里也有这个图标,同样点击能够把项目中base-package下的bean全部扫描出来。

数据库的关联

首先通过右边的侧边栏database,创建对应的数据库
image-20200113092851341

之后在写代码的时候,就会自动提示字段名

image-20200113093010605

加入想要对表名或者字段名进行重构,那么就只需要在右边点击数据库名后者字段名Shift F6
image-20200113093255833

改完之后,代码中的也会自动进行变化
image-20200113093336182

如果是修改字段的话,还可以让自己自定义修改哪些地方,比如下面的实体类中的字段和数据库是没有关系的,可以选择排除
image-20200113093451571

开始调试你的程序把

断点调试

添加断点

功能 英文 快捷键
添加断点 Toggle Line Breakpoint Cmd F8

单步运行(开始运行)

功能 英文 快捷键
单步运行(开始运行) run -> debug Ctrl D

单步运行之后,每次按F8,程序就会一行一行运行

Resume

功能 英文 快捷键
跳到下一个断点 run -> Resume Program F9(我mac上显示Opt Cmd R,但是不管用)

查看所有断点

功能 英文 快捷键
查看所有断点 Shift Cmd F8

image-20200113094820935

禁止所有断点

加入运行到某个地方发现了bug,所以后面的断点都想取消掉,怎么办?

英文:Mute Breakpoints

image-20200113095004097

条件断点

调试断点的时候,必须满足某一个条件,断点才会生效

功能 英文 快捷键
条件断点 Cmd Shift F8

首先要选中当前行,然后按快捷键Cmd Shift F8,里面填入Java的判断表达式即可,可以看到只有i=8的时候被"卡"主了。

image-20200113095807685

表达式求值

功能 英文 快捷键
表达式求值 run -> Evaluate Expression Opt F8

从上面的图中能够看到,右边会自动展示出值,但是如果没有的话怎么办呢?
选中值,然后Opt F8
image-20200113100204706

如果是List或者其他的元素,还可以求值,比如get(n)、size()等方法
image-20200113100315514

运行到指定行

功能 英文 快捷键
运行到指定行 Run to Cursor Opt F9

光标停在指定的地方,然后按Opt F9

image-20200113100449697

就会直接跳转到指定行,从上个断点到这里的中间过程不会展示出来

SetValue

功能 英文 快捷键
改变值 F2

image-20200113100902309

如上图从下面的debug窗口动态的改变上面的debug过程中代码的值

run anywhere if you can

运行上下文

功能 英文 快捷键
运行单元片段(Debug) Debug Context Configuration Ctrl Shift F9(我没有查到我查到的是Ctrl Shift D)
运行单元片段(run) Ctrl Shift R

image-20200113101440715

我希望运行这个main函数,就直接把光标放到这个main函数里面,然后按Ctrl Shift D
image-20200113101522732

如图,有多个单元测试,也可以通过Ctrl Shift D执行其中的某一个

其实还没有结束,Debug Context Configuration中的context什么意思呢?其实就是一个上下文,就是从当前鼠标光标网上找到最小的上下文
image-20200113101718159

如果把光标停留在两个函数的外面,然后按快捷键Ctrl Shift D,上下文就是整个类,就会把两个方法都进行执行了。

在当前可运行列表中选择一个运行

有时候希望更快的去运行,刚刚已经运行过的

功能 英文 快捷键
运行可运行列表中的一个 run -> debug Ctrl Opt F9
image-20200113102156708

编辑当前运行image-20200113103202428

image-20200113103522962

image-20200113103533497

其他操作

文件操作

在当前文件夹下面新建一个文件

功能 英文 快捷键
在当前文件夹下面新建一个文件 other -> new… Ctrl Opt N

鼠标在当前类中,就会直接在当前的文件夹下面新建,而不用点击左边的侧边栏,选中文件加,再新建

复制当前文件

功能 英文 快捷键
复制当前文件 F5(windows和mac一行)
image-20200113104413467

移动当前文件

功能 英文 快捷键
移动当前文件 F6

鼠标在当前类就可以直接移动当前的类,平常需要先选中左边的窗口中的文件加,然后剪切->复制
甚至如果中间没有文件夹的话,会自动新建

image-20200113104800825

文本操作

功能 英文 快捷键
复制当前文件名(选中文件) Cmd C
复制当前文件全路径名(选中文件) Shift Cmd C
选择性粘贴 Shift Cmd V

假如当前的需要复制多个文件名,一个一个复制肯定很累对吧,我们可以一次性期多次复制好先,然后通过Shift Cmd V会出现如下的页面,会列出最近复制的内容,可以选择性的粘贴
通过按1、2、3...等可以直接把对应的复制出来。

image-20200113105251234

结构图

查看当前类Field Method大纲

功能 英文 快捷键
查看当前类Field Method大纲 Navigae -> File Structure Cmd F12
image-20200113121115626

查看maven、类图、依赖

类图(对于查看类的源码非常有用)

功能 英文 快捷键
查看类图、依赖 maven中右键 -> Maven -> Show Dependencies Opt Sfhit Cmd U

image-20200113210345485

image-20200113210400660

Maven

功能 英文 快捷键
查看maven类图、依赖 maven中右键 -> Maven -> Show Dependencies Opt Sfhit Cmd U

image-20200113143548922

如果要搜索的话,Cmd F,就能迅速的跳转过去
image-20200113205903195

双击上面的某个节点,能够迅速的跳转到xml文件中对应的地方

甚至可以右击进行Exclude等操作,在对应的xml文件中也会被exclude掉。
image-20200113210104967

查看类集成结构,方法调用层次

类集成结构

功能 英文 快捷键
查看类集成结构,方法调用层次 Hierarchy Ctrl H

image-20200113210628779

方法调用层次

功能 英文 快捷键
方法调用层次 Call Hierarchy Opt Ctrl H

image-20200113211411331

发布了503 篇原创文章 · 获赞 2092 · 访问量 174万+

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/104009510
今日推荐