前言

可以直接去这里:@SnailClimb/awesome-idea

这里面写得比我详细

这篇博客并不是全部配置,只是起到一个引导作用,基础中的基础配置

JetBrains全家桶破解地址,这种方式是采用补丁,不放心的也可以选择:http://idea.lanyus.com/ 或者去:https://www.jihuo.live/

背景图

image

自动import包 和 删除不需要的包

指的是:我们写代码时,不需要自己写import xxx.xxx.xxx,同时我们写代码时引错了包/注释掉了代码,不再需要对应的包时,会自动帮我们删掉import xxx.xxxx这样的语句

image

忽略大小写

指的是:自己在写代码时,输入system 和 System弹出来的内容是一样的

image

ctrl + 鼠标滚轮调节字体大小

image

控制台使用UTF-8编码

显示方法分割线

为了排版好看而已,一个类中方法与方法之间有一条分割线

image

多行显示标签

指的是:下图中标签栏可以分行显示

image

配置:

image

注释颜色

image

注释和代码对齐 并 在注释内容前保留一个空格

image

类注释模板

/**
 * <p>
 * TODO
 * </p>
 *
 * <p>@author : ZiXieqing</p>
 * <p>@create : ${YEAR}-${MONTH}-${DAY} ${TIME}</p>
 */

image

方法注释模板

*
 * <p>
 * TODO
 * </p>
 *
 * <p>@author     : ZiXieqing</p>
 * <p>@methodName : $NAME$</p>
 * <p>@create     : $date$ $time$</p>
 $param$ $return$
 */

在代码中用此模板的快捷键:/*+下面设置的快捷键 enter / space空格....

image

image

image

image

自定义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>
 */

文件编码设置

image

文件的换行符使用 Unix 格式

image

安装插件

image

推荐的基础插件

  • lombok:减少代码冗余,如:配置无参、有参、getter、setter、链式调用,到时只需要对应注解即可

image

代码中使用

image

image

  • jclasslib Bytecode Vierer:class类文件分析(学了JVM后,才会用到)

image

  • VisualVM:排错

image

  • Arthas Idea:阿里开源的一款强大的 java 在线诊断工具。记不住Arthas的命令或模糊记住,就可以使用它。直接进入要诊断的方法和类,右键选择对应的命令,就会自动生成了

image

  • 阿里巴巴的 TongYi Lingma(通义灵码):基于通义大模型的智能编码辅助工具。

    • 提供行级/函数级实时续写:根据语法和跨文件的上下文,实时生成建议代码。
    • 自然语言生成代码:通过自然语言描述你想要的功能,可直接在编辑器区生成代码及相关注释。
    • 单元测试生成:支持 JUnit、Mockito、Spring Test、unit test、pytest 等框架生成单元测试。
    • 代码注释生成:一键生成方法注释及行间注释,节省你写代码注释的时间,有效提升代码可读性。
    • 代码解释:选中代码后可自动识别编程语言并生成代码解释。跨越语言的边界。
    • 研发智能问答(AI Coding Chat)。
    • 异常报错排查等能力,并针对阿里云 SDK/API 的使用场景调优,为开发者带来高效、流畅的编码体验。

image

  • mybatisCodeHelper:mapper与xm相关

image

注: 图中的mybatisCodeHelper要收费,可以戳这里解决

  • 阿里巴巴规范检测

image

  • Maven Helper

image

  • RestfulTool:接口测试

image

  • Rainbow Brackets:彩虹括号

image

  • HighlightBracketPair:专注当下,只会将上一层的括号重点标注出来。Rainbow Brackets 与 HighlightBracketPair可以只选其一或两个都选,个人建议:使用HighlightBracketPair就够了

image

image

  • SequenceDiagram:生成时序图,更快梳理代码逻辑

image

  • smart input:自动切换输入法。注释自动切换中文、写代码自动切换英文,不需要我们手动切换了

image

  • TreeInfotip:项目目录树添加备注信息,针对屎山代码的(命名不规范等等啥的),好记性不如烂笔头嘛

image

image

image

  • JSON Viewer:JSON查看与转换

image

  • GitToolBox:可以在每一行后面显示提交人和时间等信息。可以避免在工作中被人吐槽、方便追溯

image

  • 皮肤(主题):One dark theme、Vuesion theme、Material Theme UI

集成git

需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file ——> close project ),选择customize ——> all setting进行全局设置,这样才不容易在使用时出BUG,不然的话,进入了项目然后配置,当前项目可以适用,下一次创建时,可能又需要重新配置

image

集成maven

需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file ——> close project ),选择customize ——> all setting进行全局设置,这样才不容易在使用时出BUG,不然的话,进入了项目然后配置,当前项目可以适用,下一次创建时,可能又需要重新配置

image

maven配置参看

image

配置Maven-Runner下的VM options:-DarchetypeCatalog=internal

因为maven项目创建时,会联网下载模版文件,比较大,使用-DarchetypeCatalog=internal,不用下载,创建maven项目速度快

image

集成tomcat

需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file ——> close project ),选择customize ——> all setting进行全局设置,这样才不容易在使用时出BUG,不然的话,进入了项目然后配置,当前项目可以适用,下一次创建时,可能又需要重新配置

image

关闭IDEA更新检查

这个东西是特别针对于IDEA破解的,为了不更新IDEA

image

设置面包屑导航

指的是下图这个
image

设置方式

image

实体类implements serializable时生成序列化ID号

image

Java编译版本使用jdk8

需要在IDEA主界面(就是一开始打开IDEA时的样子,open着项目的那就 file ——> close project ),选择customize ——> all setting进行全局设置

image

配置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()预览

image

想要测试出这个问题的话,可以先不取消上面的两个东西,使用如下的代码,在每个输出位置打上断点,然后进行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 就可以让当前文件的代码按照标准格式进行重新排版了

提示

个人项目代码不注意乱了格式 或 开源项目,公司代码最好别这样重排版,因为公司代码有时是不讲逻辑的,一整可能就趴下了

重构相关快捷键

来源:SnailClimb/awesome-idea

前面两个键位是 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)

posted on 2022-05-29 13:47  紫邪情  阅读(1097)  评论(0编辑  收藏  举报