无处不在的跳转
1-项目之间的跳转:idea不同项目之间快速跳转 ctrl+alt+]
2-文件之间的跳转: 最近文件跳转 -> ctrl+e
ctrl + e 它会列出最近修改的文件。通过键盘的上下键,可以上下选择你想要的文件,然后按回车键,可以跳转到对应的文件。这样可以摆脱鼠标,提高效率。
这种上下箭头,也可以应用到alt +1的Project文件跳转中。可能后面把这个 show edited only 勾选上会清爽一点。
3-浏览修改位置跳转 ctrl+shift+backspace
这个意思是跳转会上一次修改的地方
这个快捷键很有用。他会直接跳到你上次修改的地方 ctrl+shift+backspace。 下面的那个next edit location变灰了,他其实跟上面是相反的操作。后面可以自定义这两个快捷键。这个快捷键感觉跟ctrl+e 有点冲突
4-利用书签跳转 f11; ctrl+f11; shift+f11
这个主要是浏览别人代码的时候,觉得写得好,做标记;或者是浏览源码时,通过某两个文件之间的对比。
我们创建书签时,把光标定位到你要做书签的那一行,然后按下F11键,这个时候,就会出现一个书签标记,如下所示:
如果你想编一个书签顺序,可以按ctrl+f11, 然后在下面的书签助记符中,选顺序或者字母。
到后面,就可以按住ctrl+1 或者ctrl+2 等顺序跳转书签了。
然后按 shift+f11可以查看全部已存在的书签。
按住delete可以删除书签。按一下f11是添加书签,再按一次f11是删除书签。
5-收藏位置和文件 alt+2 ; alt+shift+f
可以看到 favorites的快捷键是 alt+2。 通过alt+2 可以把favorites框唤醒出来。(IntelliJ IDEA 2021.3.2 好像没有这个???)
下面显示的时怎么把自己喜欢的东西添加到favorites。下图快捷键 alt+shift+f
如果想把函数收藏起来,也很简单,把光标定位到函数中,然后按下alt+shift+f(IntelliJ IDEA 2021.3.2 没有有这个快捷键,不知道是不是冲突了)
注意,一定要定位到具体的方法或者函数。在做笔记的时候,我把光标放在了Resp 那里,然后按下了alt+shift+f,它直接给我收藏了Resp类。后面将光标移动到getCatConfig,才移动到这个方法里面收藏。
6-字符跳转神器 emacsIdea
7-编辑器和文件区跳转
alt+1 从代码编辑区跳转到项目管理区;
esc从项目管理区跳转到代码编辑区;
这个确实牛逼!!!
alt1–alt9对应的编辑器
精准搜索
1-类搜索 ctrl+n
快速根据类名找类 ctrl+n
2-文件搜索ctrl+shift+n
找到文件后,回车即可进入文件
不仅能搜索Java文件,还能搜索Java之外的文件
勾选all places 还可以把jar的文件也查找出来,如下:
3-符号搜索 ctrl+alt+shift+n
在idea中,符号包括函数,以及属性(即成员变量)在测试过程中发现,属性不好找,所以,属性可以忽略掉。
如上图所示,我们查找方法中包含md5的方法,可以很快速的查找出来。选中对饮的方法,回车即可进入方法内部。
4-字符串搜索
字符串搜索,用的时ctrl+shift+f 但是在测试过程中发现,这个快捷键被占用了,一直无法激活。需要排查一下。
查找并替换,使用的时ctrl+shift+r
ctrl+shift+r 既能替换,也能搜索。这个可以搜索变量。
代码小助手
1-IDEA列操作
所谓列操作就是一次性操作多列,减少重复劳动。
先选中,然后按快捷键Crtl+Shift+Alt+j,效果如图:
下面是一个更详细的列操作编辑示例:
把一个Json状态码转为枚举类,原始的json状态码如下
100: "Continue"
101: "Processing"
102: "End"
详细操作如下:
选中任意一行冒号;
选中所有冒号 ctrl + shift + alt + j
单词变为大写 ctrl + shift + U
剪切 ctrl+x
移到行首 HOME
复制粘贴 ctrl+v, 键入左括号
移到下个单词尾 ctrl + →
选中冒号后的单词 ctrl + shift + →
键入右括号,逗号
格式化 ctrl + shift + L
参考:https://blog.csdn.net/abel004/article/details/90399341
2-Live tempplate 动态改变的模板
Live,表示活的,体现在参数上。表示参数可以动态改变。
使用快捷键提交代码
alt+f12 打开Terminal,切换目录,cd,打印目录,pwd,显示目录内容ls,然后输入下面的命令。
-
git stash save ‘message’ 暂存本地修改
-
git pull 拉取最新代码,对应快捷键:ctrl+t
-
git stash pop 切换回Terminal,对应快捷键alt+f12。看看是否有冲突需要解决。如果有,则解决冲突;如果没有,那么直接在terminal中打开maven, maven clean ,然后compile。
-
git stash save 切换回Terminal
-
git pull 拉取最新代码,对应快捷键:ctrl+t
-
git stash pop,没有冲突之后,便可以直接提交
最后commit 按住ctrl+k可以直接commit。如果想切换到commit窗口,按住alt+0打开。然后上下箭头可以切换行数。
按住 alt+` 弹出上面的对话框VCS Operations
解决文件冲突
在一个team中,当你和你的同事同时编辑同一个文件时,很容易发生文件冲突。如果你们两个人改的地方不是同一行,那么git会自动合并你们的冲突。但是,如果你们编辑的是同一行,或者同一个代码块,对于这种冲突,就需要我们自己手动合并了。
发生冲突的情况:在pull, merge, rebase,cherry-pick,unstash,或者apply patch这些操作中,只要你远端的跟你本地有不同,都会发生冲突。
To resolve a conflict, you need to select which action to apply (accept [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OH5Olur-1649201270941)(https://resources.jetbrains.com/help/img/idea/2021.3/icons.diff.arrow.svg)] or ignore [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NrpmIZpD-1649201270941)(https://resources.jetbrains.com/help/img/idea/2021.3/icons.diff.remove.svg)]) to the left (local) and the right (repository) version, and check the resulting code in the central pane:
左边是自己(your version)本地的,右边是远程仓库(server)的。
psvm main函数
todo
fixme
pic: public int comment 带注释的int变量声明
psc:public string comment 带注释的String变量声明
这些主要是用来 写实体类的。
如图,定义了一个带注释的int类型变量的模板。后面再编辑器中输入pic 就自动完成了。如下所示:
3-postfix 自动补全
敲完内容(如变量)后,按一个点就会给你很多提示,跟live template有点像。
例如,下面输完100之后,按个点 . 然后输入fori
return 在变量后面追加.r 即可把变量返回
使用.try
如下所示,一个构造函数中,入参是name,但是在成员变量中,这并没有声明。那么直接在构造函数中,输完name之后,点field之后,可以自动补充完成
使用return返回 在下面的getUser环境中,需要返回一个对象。那么直接在myUser变量后面点r,回车即可。
nn not null的使用。下面我要校验user不为空,则可以使用nn
4-alt+enter
4-1. 自动创建函数
如下所示,我们写了一个函数名。但是这个函数并没创建。当我们按下alt+enter之后,就自动创建了这个函数了。
4-2. 实现接口
我们在写了一个接口之后,需要对接口中的方法进行实现。这个时候可以使用alt+enter来实现接口了。
可以 先使用 ctrl+[ 快速跳转到类名那一行,然后使用左箭头移动到类名,最后按下 alt+enter,实现接口
IDEA常用快捷键 https://blog.csdn.net/weixin_34032827/article/details/89585264
4-3 导包
重构
1-重构变量
如下所示,发现命名不准确,看完代码,明白逻辑之后,需要重新修改名字。可以先选中需要改变的变量,然后在shift+f6,重命名即可。
抽取
改变签名
重命名
打开重构对话框 ctrl+alt+shift+t
抽取为方法,抽取为常量,抽取为字段,抽取为变量,抽取为参数
抽取为方法 ctrl+alt+m (method)
如上图所示,选中Switch代码块,可以将它抽取出来,作为一个独立的方法。快捷键:ctrl alt shift t 打开重构窗口,然后选取抽取为方法。或者直接ctrl zlt m,直接抽取为方法。
抽取为常量 ctrl+alt+c (constant)
抽取常量,解决魔法值问题。如下所示,将代码中的20000抽取为一个常量
抽取为字段 ctrl+alt+f (field)
抽取为变量 ctrl+alt+v (variable)
如下图,将姓名的长度,抽取为一个变量。
抽取为参数 ctrl+alt+p (parameter)
如下图,将未婚这个婚姻状态,抽取为方法的一个参数。它会检测出来你要修改多少处。选择replace all。最终的结果是,printSex方法中,多了一个参数
改变签名 ctrl+f6
如下所示,在构造函数中,新增一个变量,改变构造函数的签名。修改之后,会在所有初始化构造函数的地方,增加一个默认值
shift+f6重命名
可重命名:类名,方法名,属性名,包名
版本控制
git revert快捷键 ctrl+alt+z
如下图所示,在需要revert的地方,按住ctrl+alt+z,就可以一整块的混滚文件
Merge时只显示冲突部分
合并冲突时,点击下面的按钮,可以只显示冲突的那一部分内容
程序调试
1-添加断点 ctrl+f8
添加行断点,取消行断点,都是ctrl+f8
2-查看所有断点 ctrl+shift+f8
3-禁止所有断点
4-条件断点 ctrl+shift+f8
当符合条件(条件表达式要符合Java语法)时,进入断点。很方便
5-表达式求值 alt+f8
选中变量,然后按alt+f8
6- 运行到指定行 alt+f9
如下图所示,想要运行到光标闪烁的地方,只需要按住alt+f9 即运行到指定行
但是,如果中间有断点,则不行了。如下图:跳转到第二个断点,就停下来了。所以alt+f9感觉用处不大,不如直接加一个断点。当然了,有时候可以装逼!
7-set Value
set value 主要是动态的修改变量的值
如图所示,刚开始list是有3个值的,后面set value之后,就变为空的了。
其他
1-快速复制文件名或者文件全路径
复制文件名: 选中文件,然后ctrl+c
复制文件路径:选中文件,然后ctrl+shift+c
2-结构图
2-1查看当前field、method大纲
当源码非常长的时候,想要迅速了解改类有哪些方法,哪些字段(成员变量),可以ctrl+f12
2-2查看maven依赖,类继承结构
在pom文件中,按住 可以查看整个项目中的maven依赖拓扑图
maven依赖太多了,不好看。快捷键是ctrl+alt+shift+u
查看类图,快捷键也是ctrl+alt+shift+u 或者使用ctrl+h
ctrl+h显示类继承结构
2-3 查看方法调用层次ctrl+alt+h
也就是说,查看改方法调用了哪些方法;另一种就是看该方法被哪些方法调用了。
如下图所示,把光标定位需要查看层次结构的图,然后按住ctrl+alt+h
上面因为在main方中看的,只有他调用别人,没有别人调用它。
下面我们看看foo() 方法。如图,可以看到调用foo()的,只有main方法,而foo()调用的,有bar1(),bar2()
还可以反向层次的推导,例如,把光标定位在bar1()上,然后按住ctrl+alt+h。从调用链上看,是bar()1—>foo()—>main()
lt+h
也就是说,查看改方法调用了哪些方法;另一种就是看该方法被哪些方法调用了。
[外链图片转存中…(img-7UMugX9v-1649201270950)]
如下图所示,把光标定位需要查看层次结构的图,然后按住ctrl+alt+h
[外链图片转存中…(img-YxiejOIA-1649201270950)]
[外链图片转存中…(img-25cNjXpc-1649201270950)]
上面因为在main方中看的,只有他调用别人,没有别人调用它。
下面我们看看foo() 方法。如图,可以看到调用foo()的,只有main方法,而foo()调用的,有bar1(),bar2()
[外链图片转存中…(img-ObpEBPVP-1649201270950)]
还可以反向层次的推导,例如,把光标定位在bar1()上,然后按住ctrl+alt+h。从调用链上看,是bar()1—>foo()—>main()
[外链图片转存中…(img-vgKhQulV-1649201270950)]