IDEA开发技巧

无处不在的跳转

1-项目之间的跳转:idea不同项目之间快速跳转 ctrl+alt+]

image-20220311220703604

2-文件之间的跳转: 最近文件跳转 -> ctrl+e

ctrl + e 它会列出最近修改的文件。通过键盘的上下键,可以上下选择你想要的文件,然后按回车键,可以跳转到对应的文件。这样可以摆脱鼠标,提高效率。

这种上下箭头,也可以应用到alt +1的Project文件跳转中。可能后面把这个 show edited only 勾选上会清爽一点。

receanchange

3-浏览修改位置跳转 ctrl+shift+backspace

这个意思是跳转会上一次修改的地方

image-20220311222538202

这个快捷键很有用。他会直接跳到你上次修改的地方 ctrl+shift+backspace。 下面的那个next edit location变灰了,他其实跟上面是相反的操作。后面可以自定义这两个快捷键。这个快捷键感觉跟ctrl+e 有点冲突

4-利用书签跳转 f11; ctrl+f11; shift+f11

这个主要是浏览别人代码的时候,觉得写得好,做标记;或者是浏览源码时,通过某两个文件之间的对比。

我们创建书签时,把光标定位到你要做书签的那一行,然后按下F11键,这个时候,就会出现一个书签标记,如下所示:

image-20220311224404879

如果你想编一个书签顺序,可以按ctrl+f11, 然后在下面的书签助记符中,选顺序或者字母。

image-20220311223935275

到后面,就可以按住ctrl+1 或者ctrl+2 等顺序跳转书签了。

然后按 shift+f11可以查看全部已存在的书签。

bookmarks

按住delete可以删除书签。按一下f11是添加书签,再按一次f11是删除书签。

5-收藏位置和文件 alt+2 ; alt+shift+f

可以看到 favorites的快捷键是 alt+2。 通过alt+2 可以把favorites框唤醒出来。(IntelliJ IDEA 2021.3.2 好像没有这个???)

image-20220311224855330

下面显示的时怎么把自己喜欢的东西添加到favorites。下图快捷键 alt+shift+f

image-20220311225316621

image-20220311225435431

如果想把函数收藏起来,也很简单,把光标定位到函数中,然后按下alt+shift+f(IntelliJ IDEA 2021.3.2 没有有这个快捷键,不知道是不是冲突了)

注意,一定要定位到具体的方法或者函数。在做笔记的时候,我把光标放在了Resp 那里,然后按下了alt+shift+f,它直接给我收藏了Resp类。后面将光标移动到getCatConfig,才移动到这个方法里面收藏。

6-字符跳转神器 emacsIdea

7-编辑器和文件区跳转

alt+1 从代码编辑区跳转到项目管理区;

esc从项目管理区跳转到代码编辑区;

这个确实牛逼!!!

alt1–alt9对应的编辑器

image-20220313081252579

精准搜索

1-类搜索 ctrl+n

快速根据类名找类 ctrl+n

image-20220312104851359

image-20220312104918140

findclass

2-文件搜索ctrl+shift+n

找到文件后,回车即可进入文件

不仅能搜索Java文件,还能搜索Java之外的文件

image-20220312110356243

image-20220312110520589 勾选all places 还可以把jar的文件也查找出来,如下:

image-20220312110652636

3-符号搜索 ctrl+alt+shift+n

在idea中,符号包括函数,以及属性(即成员变量)在测试过程中发现,属性不好找,所以,属性可以忽略掉。

image-20220312111020291

image-20220312111233603

如上图所示,我们查找方法中包含md5的方法,可以很快速的查找出来。选中对饮的方法,回车即可进入方法内部。

4-字符串搜索

字符串搜索,用的时ctrl+shift+f 但是在测试过程中发现,这个快捷键被占用了,一直无法激活。需要排查一下。

查找并替换,使用的时ctrl+shift+r

image-20220312113106057

ctrl+shift+r 既能替换,也能搜索。这个可以搜索变量。

image-20220312113619515

代码小助手

1-IDEA列操作

所谓列操作就是一次性操作多列,减少重复劳动。

先选中,然后按快捷键Crtl+Shift+Alt+j,效果如图:

2

下面是一个更详细的列操作编辑示例:

把一个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,然后输入下面的命令。

  1. git stash save ‘message’ 暂存本地修改

  2. git pull 拉取最新代码,对应快捷键:ctrl+t

  3. git stash pop 切换回Terminal,对应快捷键alt+f12。看看是否有冲突需要解决。如果有,则解决冲突;如果没有,那么直接在terminal中打开maven, maven clean ,然后compile。

  4. git stash save 切换回Terminal

  5. git pull 拉取最新代码,对应快捷键:ctrl+t

  6. git stash pop,没有冲突之后,便可以直接提交

最后commit 按住ctrl+k可以直接commit。如果想切换到commit窗口,按住alt+0打开。然后上下箭头可以切换行数。

image-20220312143323742

image-20220313082020109

按住 alt+` 弹出上面的对话框VCS Operations

解决文件冲突

在一个team中,当你和你的同事同时编辑同一个文件时,很容易发生文件冲突。如果你们两个人改的地方不是同一行,那么git会自动合并你们的冲突。但是,如果你们编辑的是同一行,或者同一个代码块,对于这种冲突,就需要我们自己手动合并了。

发生冲突的情况:在pull, merge, rebase,cherry-pick,unstash,或者apply patch这些操作中,只要你远端的跟你本地有不同,都会发生冲突。

image-20220312150019366

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)的。

conflict_resolution_tool_legend

psvm main函数

todo

fixme

image-20220312153235652

pic: public int comment 带注释的int变量声明

psc:public string comment 带注释的String变量声明

这些主要是用来 写实体类的。

image-20220312160434488

如图,定义了一个带注释的int类型变量的模板。后面再编辑器中输入pic 就自动完成了。如下所示:

image-20220312160832641

picname

3-postfix 自动补全

敲完内容(如变量)后,按一个点就会给你很多提示,跟live template有点像。

image-20220312164053837

image-20220312164148607

例如,下面输完100之后,按个点 . 然后输入fori

fori

return 在变量后面追加.r 即可把变量返回

使用.try

try

如下所示,一个构造函数中,入参是name,但是在成员变量中,这并没有声明。那么直接在构造函数中,输完name之后,点field之后,可以自动补充完成

field

使用return返回 在下面的getUser环境中,需要返回一个对象。那么直接在myUser变量后面点r,回车即可。

return

nn not null的使用。下面我要校验user不为空,则可以使用nn

nn

4-alt+enter

4-1. 自动创建函数

如下所示,我们写了一个函数名。但是这个函数并没创建。当我们按下alt+enter之后,就自动创建了这个函数了。

alt

4-2. 实现接口

我们在写了一个接口之后,需要对接口中的方法进行实现。这个时候可以使用alt+enter来实现接口了。

可以 先使用 ctrl+[ 快速跳转到类名那一行,然后使用左箭头移动到类名,最后按下 alt+enter,实现接口

altenter

IDEA常用快捷键 https://blog.csdn.net/weixin_34032827/article/details/89585264

4-3 导包

重构

1-重构变量

如下所示,发现命名不准确,看完代码,明白逻辑之后,需要重新修改名字。可以先选中需要改变的变量,然后在shift+f6,重命名即可。

rename

抽取

改变签名

重命名

打开重构对话框 ctrl+alt+shift+t

抽取为方法,抽取为常量,抽取为字段,抽取为变量,抽取为参数

抽取为方法 ctrl+alt+m (method)

extractMethod

如上图所示,选中Switch代码块,可以将它抽取出来,作为一个独立的方法。快捷键:ctrl alt shift t 打开重构窗口,然后选取抽取为方法。或者直接ctrl zlt m,直接抽取为方法。

抽取为常量 ctrl+alt+c (constant)

抽取常量,解决魔法值问题。如下所示,将代码中的20000抽取为一个常量

extractConstant

抽取为字段 ctrl+alt+f (field)

extractFiled

抽取为变量 ctrl+alt+v (variable)

如下图,将姓名的长度,抽取为一个变量。

extractV

抽取为参数 ctrl+alt+p (parameter)

如下图,将未婚这个婚姻状态,抽取为方法的一个参数。它会检测出来你要修改多少处。选择replace all。最终的结果是,printSex方法中,多了一个参数

extractBigP

改变签名 ctrl+f6

如下所示,在构造函数中,新增一个变量,改变构造函数的签名。修改之后,会在所有初始化构造函数的地方,增加一个默认值

chanageSig

shift+f6重命名

可重命名:类名,方法名,属性名,包名

版本控制

git revert快捷键 ctrl+alt+z

image-20220312182418496

如下图所示,在需要revert的地方,按住ctrl+alt+z,就可以一整块的混滚文件

revert

Merge时只显示冲突部分

合并冲突时,点击下面的按钮,可以只显示冲突的那一部分内容

image-20220405134400006

程序调试

1-添加断点 ctrl+f8

添加行断点,取消行断点,都是ctrl+f8

image-20220312185422826

2-查看所有断点 ctrl+shift+f8

image-20220312190728860

3-禁止所有断点

4-条件断点 ctrl+shift+f8

当符合条件(条件表达式要符合Java语法)时,进入断点。很方便

image-20220312190408665

5-表达式求值 alt+f8

选中变量,然后按alt+f8

6- 运行到指定行 alt+f9

如下图所示,想要运行到光标闪烁的地方,只需要按住alt+f9 即运行到指定行

new-altf9

但是,如果中间有断点,则不行了。如下图:跳转到第二个断点,就停下来了。所以alt+f9感觉用处不大,不如直接加一个断点。当然了,有时候可以装逼!

not-work

7-set Value

set value 主要是动态的修改变量的值

setvalue

如图所示,刚开始list是有3个值的,后面set value之后,就变为空的了。

其他

1-快速复制文件名或者文件全路径

复制文件名: 选中文件,然后ctrl+c

复制文件路径:选中文件,然后ctrl+shift+c

copy

2-结构图

2-1查看当前field、method大纲

当源码非常长的时候,想要迅速了解改类有哪些方法,哪些字段(成员变量),可以ctrl+f12

structure

2-2查看maven依赖,类继承结构

在pom文件中,按住 可以查看整个项目中的maven依赖拓扑图

maven依赖太多了,不好看。快捷键是ctrl+alt+shift+u

查看类图,快捷键也是ctrl+alt+shift+u 或者使用ctrl+h

classstruct

ctrl+h显示类继承结构

classh

2-3 查看方法调用层次ctrl+alt+h

也就是说,查看改方法调用了哪些方法;另一种就是看该方法被哪些方法调用了。

image-20220312223042486

如下图所示,把光标定位需要查看层次结构的图,然后按住ctrl+alt+h

image-20220312223437149

methodcall1

上面因为在main方中看的,只有他调用别人,没有别人调用它。

下面我们看看foo() 方法。如图,可以看到调用foo()的,只有main方法,而foo()调用的,有bar1(),bar2()

methodcall2

还可以反向层次的推导,例如,把光标定位在bar1()上,然后按住ctrl+alt+h。从调用链上看,是bar()1—>foo()—>main()

methodcall3

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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值