idea多行编辑_开发神器idea被玩残了,你们功不可没啊!

狗哥是做java开发的,平时喜欢用idea作为开发工具,上次被技术总监小马哥吐槽了,说我是个菜逼。

狗哥下去之后研究了2周,整理了这篇文章,开发效率提升了30%。

psvm+Tab键:快速输出main方法

效果

public static void main(String[] args) {
}
sout+Tab键:快速输出System.out.println();
对象.sout+Tab键
"狗哥".sout + Tab键 -> System.out.println("狗哥");
任意对象.var+Tab键:快速声明对象
"".var+Tab键 -> String s = "";
new Object().var+Tab键 -> Object o = new Object();
任意布尔表达式.if+Tab键:快速输出if块
object1.equals(object2).if+Tab键

效果

if (object1.equals(object2)) {

}
任意布尔表达式.while+Tab键:快速输出while块
object1.equals(object2).while+Tab键

效果

while (object1.equals(object2)) {

}
fori+Tab键:快速输出for代码块
for (int i = 0; i 
}
Ctrl+Alter+T:代码包裹,很牛逼的功能

比如我们相对一段代码执行下面操作:

  • 使用 if 包裹

  • 使用 if / else 包裹

  • 使用 while 包裹

  • 使用 do / while

  • 使用 try / catch

  • 使用 try / finally包裹

  • 使用 try / catch / finally包裹

  • 使用 synchronized 包裹

  • 使用 {} 包裹

等等,都可以使用Ctrl+Alter+T来快速生成,选中需要包裹的代码,然后按上面的快捷键,如选中下面代码

String name = "程序员狗哥";

Ctrl+Alter+T,选择窗口中的try / catch / finally,最后效果

try {
    String name = "程序员狗哥";
} catch (Exception e) {
    e.printStackTrace();
} finally {
}
Ctrl+w:选择代码块,w可以按多次,可以连续选择
Ctrl+Shift+w:Ctrl+w反向操作
Ctrl+O:快速在当前类中生成需要重写父类的方法

比如想在当前类中重写父类中的一些方法,可以按这个快捷键,然后会列出所有可以重写的方法,然后选中一个,此时会快速在当前类中生成重写的代码

Ctrl+I:快速当前类中生成需要实现的接口中的方法

可以快速在实现类中生成接口中需要实现的方法。

Alter+Insert:用于快速生成一些代码
  • 快速生成构造方法

  • 快速生成get、set方法

  • 快速生成toString方法

  • 快速重新方法

javabean中比较常用,用来快速生成get、set方法。

Ctrl+Alter+L:快速格式化代码

当前文件中使用这个快捷键,会格式化当前类中所有代码;也可以选中一部分代码进行格式化。

Ctrl+Alter+O:优化当前类中导入的包

比如当前有一些无用的import,这个快捷键会将这些无用的清理掉

Ctrl+/:使用//注释代码
Ctrl+Shift+/:使用/**/注释代码
Ctrl+Shift+向下箭头:快速将一个代码块下移

比如像调整类中方法的顺序,选中方法名,然后使用这个快捷键,将方法整体下移。

Ctrl+Shift+向上箭头:快速将一个代码块上移
Alter+Shift+向上箭头:快速上移一行代码
Alter+Shift+向下箭头:快速下移一行代码
Ctrl+Shift+C:快速复制文件路径
选择下面这个类
com.alibaba.fastjson.JSON
按Ctrl+Shift+C
效果:
C:\maven\.m2\repository3.3.9_0\com\alibaba\fastjson\1.2.29\fastjson-1.2.29.jar!\com\alibaba\fastjson\JSON.class
Ctrl+Shift+Alt+C:快速复制引用

快速获取引用,如

在JSON类上按Ctrl+Shift+Alter+C,可以将类的全名com.alibaba.fastjson.JSON复制到剪切板

快速复制方法引用,如:

在JSON的parse方法上使用这个快捷键可以将下面信息复制到剪切板:
com.alibaba.fastjson.JSON#parse(java.lang.String, int)
Alter+Shift+Insert:列选择模式,同时编辑多行内容

比如我有个文件,内容如下:

分享各种好用的软件
分享各种使用的技巧
分享各种好用的开源项目

此时我想在每行前面加上程序员狗哥

可以按Alter+Shift+Insert进入多行编辑模式,然后点击鼠标左键拖拽鼠标,此时每行会加入光标,然后进行编辑。

再次按Alter+Shift+Insert可以退出当前模式。

Ctrl+Shift+J:将多行代码缩为一行

选中下面代码,使用Ctrl+Shift+J

String name = "狗哥";
int age = 30;
String address = "北京市";

效果如下,变为一行代码了

String name = "狗哥"; int age = 30; String address = "北京市";
Ctrl+D:快速复制行

快速复制单行,将光标放在下面代码上,按Ctrl+D

String name = "狗哥"; 

效果

String name = "狗哥"; 
String name = "狗哥"; 

快速复制多行,选中下面代码,按Ctrl+D

String name = "狗哥";
int age = 30;
String address = "北京市";

效果

String name = "狗哥";
int age = 30;
String address = "北京市";
String name = "狗哥";
int age = 30;
String address = "北京市";
选中代码+Tab键:将选中的代码快速缩进

选中

String name = "狗哥";
int age = 30;
String address = "北京市";

按Tab键,效果

    String name = "狗哥";
    int age = 30;
    String address = "北京市";
选中代码+Shift+Tab键:上面命令的反向操作
Ctrl+Shift+U:对代码切换大小写

选中下面代码

ABCDE

按Ctrl+Shift+U

abcde

再按Ctrl+Shift+U

ABCDE
Ctrl+Q:快速查看文档

快速查看类的文档,比如在Method类上,按Ctrl+Q,效果

04be820eea6d0bd84c9da5cbfb5ca14c.png

快速查看方法文档,比如我想查看下面方法的文档信息

java.lang.reflect.Method.invoke

选中上面这个方面的名称,按Ctrl+Q,效果:

8fd80d5096c7c15ce50d166581e8d7b4.png

Ctrl+P:查看方法参数

下面是在forName0方法上,使用Ctrl+P产生的效果,可以看到这个参数的详细信息

87a93268a6f91d8b6d2227c00c7c915b.png

Ctrl+Shift+P:快速查看一个表达式的类型

比如我想查看下面选中的这段代码,最后结果是什么类型的,对选中表达式按Ctrl+Shift+P

64caebb7435ecf329d739b9f77c43c37.png

下面是效果,红框中显示了选中表达式的类型

ca9d2794bff5fcca013b3188177dfce1.png

Ctrl+E:查看最近访问的文件

按这个快捷键之后会弹出一个窗口,会列出最近访问的文件

2078b0c9e081bf55ae2f2f819382327e.png

多窗口查看文件

很牛逼的一个功能,看效果

下面的类上面点击鼠标右键,点击Split Vertically

c6640f332604b4b9257cf7d47c93664d.png

效果,此时产生了2个窗口显示Class类

5dd896ed314bfda45bfdb85c9f13c262.png

还可以继续开,下面来个垂直开多个窗口,点击下面的Split Horizontally,如下

0b5b6fd20979a50840105cf943f222d3.png

效果,3个窗口了

6c965e58c58fae380ff4c66c514c6edf.png

Ctrl+N:当前项目中快速查找某个类
Ctrl+N+N:当前项目及所有jar包中查找类
Ctrl+Shift+N:当前项目中快速查找某个文件
Ctrl+Shift+N+N:当前项目及其他所有文件中查找某个文件
Ctrl+G:输入行号,快速跳转到某一行代码
Ctrl+B:跳转到声明处
跳转到变量声明处

有时候方法比较长,我想看某个变量在什么地方定义的,直接选中变量,然后按Ctrl+B,此时光标会跳到变量定义的地方。

如下,选中红框中的sb,然后按Ctrl+B

b9581cf680ed2e86a23c0e7765fcc767.png

此时光标跳到下面这里了

821eea73d83069cca52c85584c205e72.png

跳转到类型的定义处

a1a949f8e75d10a9e333c036dfcf1451.png

此时跳到StringBuilder中去了,如下:

58f505ec24e58950ff62b33984c5628c.png

跳转到方法定义处

如:

6460fc74ea33694358f22c87859d9a08.png

点击Ctrl+B,跳到下面这里了

7bfa6a9bfa690c5b7768fb404f28988f.png

Ctrl+U:快速导航到某个类的父类或者接口
Ctrl+Alt+B:快速导航到实现中去(2种常见用法)
快速导航到某个类或者接口的实现类中

如下面这个接口

d5eb210b3747b138a90fca05b44f8cad.png

有一个实现类

0e929469581af76706c1b1364e017816.png

可以在IOrderService这个接口中,按Ctrl+Alt+B快捷键,直接跳到其实现类OrderServiceImpl中去。

快速导航到方法的实现上

下面的方法中按Ctrl+Alt+B

fad25e6c438bf436732f44657350ad6a.png

此时会跳到实现类中对应的方法中去,如下:

682a5fe724dc679a4f281be628805bbb.png

Ctrl+Shift+B:快速跳到定义类型声明中去

下面的toGe这个方法,返回值是String类型,在方法上使用Ctrl+Shift+B组合键,会跳转到String类中去

28ff2247c93989f98c76fe00e7c2c77e.png

效果

26ce45f9012874ed983ada0bc7ac5ca6.png

下面这个sb变量是StringBuffer类型,在sb变量上使用Ctrl+Shift+B组合键,会跳转到StringBuffer类中去

bfb99bde9b31f67523ef30df00eeb2e0.png

效果

15d954355da5126dbf6c4ce1475fdd52.png

Ctrl+F12:查看文件结构(快速查看类的方法、成员变量)

快速定位到类中的方法,如查看String类中所有方法,String类中按Ctrl+F12,如下

eaa0cc110fa5dc5a2b332752e3414d57.png

Ctrl+Alt+F12:快速打开文件在磁盘中的位置

比如在String类中使用Ctrl+Alt+F12

09a8a358a8eef4609c4a04af85ce4cdf.png

点击src.zip

0b828ae27049e5fa71d86d8ab384c90a.png

Ctrl+H:显示一个类型的层次结构

String类上使用这个快捷键,效果

006ac3a45c4b807d3da1a01622b110e5.png

Alt+F7:查看某个类或者方法被哪些地方使用了

查看某个方法被哪些地方使用了,这个功能够比较常用,方法上面使用Alt+F7,会列出当前方法被哪些地方调用了。

Shift+F6:快速重命名(对文件、类、变量快速重命名)
Ctrl+Alt+M:将一段代码抽取为方法
F6:快速将一个类移动到另外一个包中

快速将下面这个类移动到test2包中,选中这个类,按F6

5351b196360f7af256d808ef5362b481.png

下面输入需要移动的目标地址

d66e49a330d9763141799f5c72ac06fc.png

移动完毕

8c2d9f1fa5d555edc4e3c416b07cde4e.png

F5:快速复制一个类

快速复制下面这个类,直接按F5,New Name中输入新的类名Demo2

3207c718d1144b7c0f8a5e11bdd8c0a6.png

下面产生了一个同样的类

e0346bf07d10777edf1b7ad72b8795e2.png

Ctrl+Alt+Shift+T+7:将方法参数抽取到对象中

下面的insert方法,参数太多,此时想将这几个参数封装在UserDto对象中

public class UserService {
    public void insert(String name, String age, String salary, String job){
    }
}

选中方法,先使用Ctrl+Alt+Shift+T组合键,然后按7,弹出下面窗口,输入类名

88bc02d575ab627e16649f16ab2b25ae.png

方法的参数被抽取到下面的UserDto中了

be0d9f441c3bca26719775db5e7e4846.png

insert方法变成下面这样了

fae54b7bfee4adbf89a0d2164a69fef9.png

Ctrl+Alt+V:抽取变量

下面代码,狗哥出现了4次,可以将其用一个变量来代替,选中任意一个狗哥,使用Ctrl+Alt+V

public void m1(){
    System.out.println("狗哥");
    System.out.println("狗哥");
    System.out.println("狗哥");
    System.out.println("狗哥");
}

e90d78adcd32df6b04fc71d526b60633.png

代码变成了下面这样

public void m1(){
    String dog = "狗哥";
    System.out.println(dog);
    System.out.println(dog);
    System.out.println(dog);
    System.out.println(dog);
}
Ctrl+Alt+C:抽取常量
public void m1(){
    System.out.println("狗哥");
    System.out.println("狗哥");
    System.out.println("狗哥");
    System.out.println("狗哥");
}

上面代码使用Ctrl+Alt+C组合键,变成下面这样,

public static final String DOG_NAME = "狗哥";

public void m1() {
    System.out.println(DOG_NAME);
    System.out.println(DOG_NAME);
    System.out.println(DOG_NAME);
    System.out.println(DOG_NAME);
}
Ctrl+Alt+C:抽取方法参数
public void m1(){
    System.out.println("狗哥");
    System.out.println("狗哥");
    System.out.println("狗哥");
    System.out.println("狗哥");
}

上面代码使用Ctrl+Alt+C组合键,变成下面这样,狗哥变为了方法的参数

public void m1(String dogName){
    System.out.println(dogName);
    System.out.println(dogName);
    System.out.println(dogName);
    System.out.println(dogName);
}
Ctrl+Shift+T:快速给一个类生成单元测试
Ctrl+Shift+F12:当前窗口最大化
Alt+F1:可以将正在编辑的元素在各个面板中定位
使用ctrl+鼠标滚轮更改字体大小(缩放)

配置如下

0195f9d5bd2c12dbfc5791302e309426.png

效果,下面代码字体比较小,使用ctrl+鼠标滚轮试试效果

df881615f325a3f63fbbd2d540209f68.png

效果如下,随着滚轮的运动,字体变大/变小:

851f61f4c5acb627a520ccfb53919ea8.png

开启代码自动提示

配置如下

5d0e7c9060a6469e2317a17bfbc5d425.png

比如我输入hash,会出现下面效果,弹出一堆提示

586346f98311ce7bf300be340078406b.png

显示行号

bd8b307722ebc0fe60cbb045baebd8de.png

调试相关功能

添加断点:行号上面点击鼠标左键

点击下面的红圈

aa768dd79e9cc04f9e6d45ac4e8097b0.png

效果

97fd6b3d48489254d65c3e48aa47495b.png

F7:进入方法

调试的时候遇到方法体的时候会进入到方法体内部,每个方法依次执行

F8:一行行调试

调试的时候 遇到方法体不会进入方法内部  只会依次执行

F9:跳到下一个断点

调试的时候 只会执行 打断点的地方

Shift + F8:跳出当前方法
Alt + Shift + F7:强制进入方法

调试的过程中强制进入方法内部,这个和F7看起来有点相似,其实不一样的,F7只能进入当前项目中类的方法中,而当前这个更强大,可以进入任何方法内部。

条件断点

比如下面代码,只想在i为10的时候停下来

for (int i = 0; i 50; i++) {
    System.out.println(i);
}

鼠标左键在行数上加上断点,在断点上右键加上条件,点击Done按钮

cb8e69a69b648e9454621bf3c0e61a67.png

此时断点上面会有个问号

e4d0ad6614c0c8f685344702ce02bf6d.png

Alt+F8:调试过程中表达式求值

ed642efa685e5f5effe6ac0f9cb447f3.png

禁用断点

比如系统中有很多断点,此时不想删除,但是又不像让断点阻碍当前程序的执行,可以点击下面的按钮,会让所有断点都变灰失效

54aaa741c706b0aceeff2b31adcb7ed3.png

批量去掉断点

点击下面的按钮

6917bd53da46598fca202f931e5d9ad7.png

弹出断点视图,可以对断点增删操作

15896dd413a7bd0b38cb6c592927a98f.png

感谢阅读,狗哥致力于为大家推荐各种好用、好玩的东西,也希望大家能支撑一下狗哥,帮忙转发一下,让更多好友一起成长!

39179f52f211040d55bc45cb4dd6256e.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值