前言
可以直接去这里:@SnailClimb/awesome-idea
这里面写得比我详细
这篇博客并不是全部配置,只是起到一个引导作用,基础中的基础配置
JetBrains全家桶破解地址,这种方式是采用补丁,不放心的也可以选择:http://idea.lanyus.com/ 或者去:https://www.jihuo.live/
背景图
自动import包 和 删除不需要的包
指的是:我们写代码时,不需要自己写import xxx.xxx.xxx
,同时我们写代码时引错了包/注释掉了代码,不再需要对应的包时,会自动帮我们删掉import xxx.xxxx
这样的语句
忽略大小写
指的是:自己在写代码时,输入system 和 System弹出来的内容是一样的
ctrl + 鼠标滚轮调节字体大小
控制台使用UTF-8编码
显示方法分割线
为了排版好看而已,一个类中方法与方法之间有一条分割线
多行显示标签
指的是:下图中标签栏可以分行显示
配置:
注释颜色
注释和代码对齐 并 在注释内容前保留一个空格
类注释模板
/**
* <p>
* TODO
* </p>
*
* <p>@author : ZiXieqing</p>
* <p>@create : ${YEAR}-${MONTH}-${DAY} ${TIME}</p>
*/
方法注释模板
*
* <p>
* TODO
* </p>
*
* <p>@author : ZiXieqing</p>
* <p>@methodName : $NAME$</p>
* <p>@create : $date$ $time$</p>
$param$ $return$
*/
在代码中用此模板的快捷键:/*+下面设置的快捷键 enter / space空格....
自定义params配置
groovyScript(
"def result = '';
def params = \"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for (def i = 0; i < params.size(); i++) {
result += (i > 0 ? ' *' : '*') + (params[i].size() > 0 ? ' @param ' + params[i] : '') + (i < params.size() - 1 ? ' \\r\\n' : ' ');
};
return result;", methodParameters()
);
自定义return配置
groovyScript(
"def returnType = \"${_1}\";
return (
'void' == returnType ? '' : '\\r\\n * @return ' + returnType + ' '
);",methodReturnType()
);
要是想对date也进行自定义配置(即:使用-
切割开),和前面return一样,配置如下内容即可`
groovyScript("
import java.text.SimpleDateFormat;
def date = new Date();
sdf = new SimpleDateFormat('yyyy-MM-dd');
return sdf.format(date);
")
备注:若是选择不自定义参数和返回值配置,选择的是:methodParamsType 和 methodReturnType,那么方法模板就需要变一下
*
* <p>@description : 该方法功能 TODO
* </p>
* <p>@author: ZiXieqing</p>
* <p>@createTime: $date$ $time$</p>
* <p>@version: V1.0.0</p>
* <p>@params: $param$</p>
* <p>@return: $return$</p>
*/
文件编码设置
文件的换行符使用 Unix 格式
安装插件
推荐的基础插件
- lombok:减少代码冗余,如:配置无参、有参、getter、setter、链式调用,到时只需要对应注解即可
代码中使用
- Translation:翻译。谷歌翻译不能用的问题去这里:https://zhuanlan.zhihu.com/p/571190754
- jclasslib Bytecode Vierer:class类文件分析(学了JVM后,才会用到)
- VisualVM:排错
- Arthas Idea:阿里开源的一款强大的 java 在线诊断工具。记不住Arthas的命令或模糊记住,就可以使用它。直接进入要诊断的方法和类,右键选择对应的命令,就会自动生成了
-
阿里巴巴的 TongYi Lingma(通义灵码):基于通义大模型的智能编码辅助工具。
- 提供行级/函数级实时续写:根据语法和跨文件的上下文,实时生成建议代码。
- 自然语言生成代码:通过自然语言描述你想要的功能,可直接在编辑器区生成代码及相关注释。
- 单元测试生成:支持 JUnit、Mockito、Spring Test、unit test、pytest 等框架生成单元测试。
- 代码注释生成:一键生成方法注释及行间注释,节省你写代码注释的时间,有效提升代码可读性。
- 代码解释:选中代码后可自动识别编程语言并生成代码解释。跨越语言的边界。
- 研发智能问答(AI Coding Chat)。
- 异常报错排查等能力,并针对阿里云 SDK/API 的使用场景调优,为开发者带来高效、流畅的编码体验。
- mybatisCodeHelper:mapper与xm相关
注: 图中的mybatisCodeHelper要收费,可以戳这里解决
- 阿里巴巴规范检测
- Maven Helper
- RestfulTool:接口测试
- Rainbow Brackets:彩虹括号
- HighlightBracketPair:专注当下,只会将上一层的括号重点标注出来。Rainbow Brackets 与 HighlightBracketPair可以只选其一或两个都选,个人建议:使用HighlightBracketPair就够了
- SequenceDiagram:生成时序图,更快梳理代码逻辑
- smart input:自动切换输入法。注释自动切换中文、写代码自动切换英文,不需要我们手动切换了
- TreeInfotip:项目目录树添加备注信息,针对屎山代码的(命名不规范等等啥的),好记性不如烂笔头嘛
- JSON Viewer:JSON查看与转换
- GitToolBox:可以在每一行后面显示提交人和时间等信息。可以避免在工作中被人吐槽、方便追溯
- 皮肤(主题):One dark theme、Vuesion theme、Material Theme UI
集成git
需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file
——> close project
),选择customize
——> all setting
进行全局设置,这样才不容易在使用时出BUG,不然的话,进入了项目然后配置,当前项目可以适用,下一次创建时,可能又需要重新配置
集成maven
需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file
——> close project
),选择customize
——> all setting
进行全局设置,这样才不容易在使用时出BUG,不然的话,进入了项目然后配置,当前项目可以适用,下一次创建时,可能又需要重新配置
maven配置参看
配置Maven-Runner下的VM options:-DarchetypeCatalog=internal
因为maven项目创建时,会联网下载模版文件,比较大,使用-DarchetypeCatalog=internal
,不用下载,创建maven项目速度快
集成tomcat
需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file
——> close project
),选择customize
——> all setting
进行全局设置,这样才不容易在使用时出BUG,不然的话,进入了项目然后配置,当前项目可以适用,下一次创建时,可能又需要重新配置
关闭IDEA更新检查
这个东西是特别针对于IDEA破解的,为了不更新IDEA
设置面包屑导航
指的是下图这个
设置方式
实体类implements serializable
时生成序列化ID号
Java编译版本使用jdk8
需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file
——> close project
),选择customize
——> all setting
进行全局设置
配置Debug下输出结果出入问题
比如:在未打断点进行run输出的结果为:
head 766672210
head 766672210
head 766672210
打上断点,但直接run运行完整个程序(不是以debug模式运行)的结果:
head 766672210
head 766672210
head 766672210
看起来加入断点和未加入断点直接run整个程序结果都是一样的,但是一旦在每个输出位置加入断点,进行Debug运行时,就可能是如下的结果:
head 766672210
head 1020391880
head 1020391880
这是因为此时使用Debug进行程序运行,IDEA会调用对象的toString()
方法,所以会造成调试结果不一致,因此需要关闭IDEA在Debug模式下的toString()
预览
想要测试出这个问题的话,可以先不取消上面的两个东西,使用如下的代码,在每个输出位置打上断点,然后进行Debug,最后就会中奖了
import java.lang.reflect.Field;
import java.util.concurrent.ConcurrentLinkedOueue;
public class ConcurrentLinkedOueueTestf {
public static void main(String[]args) (
ConcurrentLinkedQueue <String> queue = new ConcurrentLinkedQueue <>();
print(queue);
queue.offer("item1");
print(queue);
queue.offer("item2");
print(queue);
queue.offer("item3");
print(queue);
}
private static void print(ConcurrentLinkedOueue queue) {
Fieldfield=null;
booleanisAccessible = false;
try {
field = ConcurrentLinkedQueue.class.getDeclaredField("head");
isAccessible = field.isAccessible();
if(!isAccessible) [
field.setAccessible(true);
}
System.out.println("head: " + System.identityHashCode(field.get(queue)));
catch (Exception e) {
e.printStackTrace();
finally (
field.setAccessible(isAccessible);
}
}
}
中奖的原因:当调用ConcurrentLinkedQueue
类的toString()
方法时会获取队列的迭代器,而创建迭代器时会调用队列的first()
,在first()
里会修改head的属性,从而导致输出的结果不一致
要完全解决上面中奖的情况就是关闭IDEA的 EnablealternativeviewforCollectionsclasses 和 Enable'toString()'objectview 选项
IDEA基础快捷键
新建文件
alt + ins
当你新建一个类/接口.......之类时,可以直接选中 包名,然后用 alt + ins即可
递进式选择代码
ctrl + w
使用 Ctrl + W
快捷键时,光标会从当前选中的单词开始,逐步扩展选择范围。第一次按 Ctrl + W
会选择一个单词,第二次按会选择包含该单词的整个语句,第三次按会选择整个语句所在的行,第四次按会选择一个函数或方法
字符串选择时就很有用
查看当前类层次结构
Ctrl + H
阅读源码的时候,经常需要查看类的层次结构。如我们遇到抽象类或者接口的时候,经常需要查看其被哪些类实现,只需要把鼠标移动到 类名 上,然后使用快捷键 Ctrl + H
即可
检索类
Ctrl + N (Win) / Command + ○ (Mac)
使用快捷键 Ctrl + N
(Win) / Command + ○
(Mac)可以快速检索类/文件
当前文件下检索
Ctrl + F (Win) / Command + F (Mac)
跳转到当前文件指定行
ctrl + g
查看类/方法的实现
Ctrl + Alt + B (Win) / Command + Alt + B (Mac)
如果我们想直接跳转到某个类/方法的实现类,直接在类名或方法名或上使用快捷键 Ctrl + Alt + B
(Win) / Command + Alt + B
(Mac) 即可
如果对应的方法/类只有一个实现类的话,会直接跳转到对应的实现类
如果对应的方法/类有多个实现类的话,IDEA 会弹出一个选择框让你选择
关闭当前文件
ctrl + f4
查看方法被使用情况
Alt + F7
可以直接在方法名上使用快捷键 Alt + F7 来查看这个方法在哪些地方被调用过
查看最近使用的文件
Ctrl + E(Win) / Command +E (Mac)
查看图表形式的类继承链
点击类名 右键 ,选择
Shw Diagrams
即可查看图表形式的类继承链
点击图表中具体的类 右键,然后选择显示它的实现类或者父类
如果你想跳转到对应类的源码的话,直接点击图表中具体的类 右键 ,然后选择 Jump to Source
多光标操作
alt + shitf + 鼠标左击
按下 Alt+Shift 的同时使用鼠标左键点击,可以在点击的位置插入光标,实现多处同时操作
展开/收起括号体
ctrl + shift + -/+
有时不需要看某个类(内部类)/方法体的内容,影响源码阅读了,此时将光标放到不想看的类名/类中 或 方法名/方法体中,然后使用 ctrl + shift + -/+
(收起/展开),
变量批量重命名 / 文件重命名
变量批量重命名:光标放到要重命名得到变量上,按下 shift + f6,然后输入新名字即可
有时在当前文件中,某个变量需要变动,想要将当前文件中使用到该变量的名字都重命名,此时将光标放到要重命名得到变量上,按下 shift + f6,然后输入新名字即可
文件重命名:光标选中文件,然后按 shift + f6
标准排版当前文件
ctrl + alt + L
有时代码排版简直乱七八糟,对于强迫症的人来说简直是折磨,此时使用 ctrl + alt + L
就可以让当前文件的代码按照标准格式进行重新排版了
提示
个人项目代码不注意乱了格式 或 开源项目,公司代码最好别这样重排版,因为公司代码有时是不讲逻辑的,一整可能就趴下了
重构相关快捷键
前面两个键位是 Command (⌘) + Option(⌥) (Mac) / Ctrl + Alt (Windows/Linux) 是固定的,只有后面一个键位会变。比如 Extract constant (提取变量)就是 c(constant)、Extract variable (提取变量)就是 v(variable)
提取常量(extract constant)
使用场景: 提取未经过定义就直接出现的常量。提取常量使得你的编码更易读,避免硬编码
快捷键 : Command (⌘) + Option(⌥) + c(Mac)/ Ctrl + Alt + c(Windows/Linux)
提取变量(exact variable)
使用场景: 提取多次出现的表达式。
快捷键: Command (⌘) + Option(⌥) + v(Mac) / Ctrl + Alt + V(Windows/Linux)
提取参数(exact parameter)
使用场景 : 提取参数到方法中。
快捷键 :Command (⌘) + Option(⌥) + p(Mac)/ Ctrl + Alt + P(Windows/Linux)
提取属性(exact field)
使用场景: 把当前表达式提取成为类的一个属性
快捷键: Command (⌘) + Option(⌥) + F(Mac) / Ctrl + Alt + F(Windows/Linux)
提取方法(exact method)
使用场景: 1 个或者多个表达式可以提取为一个方法。 提取方法也能使得你的编码更易读,更加语义化
快捷键: Command (⌘) + Option(⌥) + M(Mac)/ Ctrl + Alt + M(Windows/Linux)
提取接口(exact interface)
使用场景: 想要把一个类中的 1 个或多个方法提取到一个接口中的时候。
快捷键: Command (⌘) + Option(⌥) + M(Mac)/ Ctrl + Alt + M(Windows/Linux)