最近受部门的邀请,给入职新人统一培训IDEA,发现有很多新人虽然日常开发使用的是IDEA,但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀的IDE。 同时,在这次分享之后,本人自己也学习到了一些新的使用技巧,所以借着这次机会,一起分享出来。希望可以帮到一些人。 基于的 IDEA 版本信息:IntelliJ IDEA 2018.2.2 (Ultimate Edition)
知识点概览: - 高效率配置
- 日常使用 必备快捷键(★★)
- 查找
- 跳转切换
- 编码相关
- 代码阅读相关
- 版本管理相关
- 编码效率相关(★★)
- 文件代码模板
- 实时代码模板
- 其他
- 代码调试 源码阅读相关(★★★)
- 视图模式
- 代码调试
- ...
- 插件方面
- 插件的安装与使用
- 插件推荐
- 参考: q4 y1 F: v# I+ B7 G3 B
高效率配置 1. 代码提示不区分大小写 Settings -> Editor -> General -> Code Completion
# S% p |! S1 @$ G& T3 U
5 l9 n, p/ L1 ?; a, i1 F, W; e. u: e* o `( h* G
9 H4 v1 t* V T(低版本 将 Case sensitive completion 设置为 None 就可以了) 2. 自动导包功能及相关优化功能 Settings -> Editor -> General -> Auto Import
; ?( ~. u9 R1 }% I7 i
: K3 L2 w! r5 D, J. T' o
6 u2 p/ g) d% `8 o8 Q+ |) z& G$ F$ b5 A* w
3. CTRL + 滑动滚轮 调整窗口显示大小 Settings -> Editor -> General -> Change font size (Zoom) with Ctrl+Mouse wheel
6 u$ J' L# n0 m! t$ i * Y; N% ?; c, l2 E& K8 q
) K7 A/ Y) r$ g6 C
7 J& t- H( X9 c# V+ F选择之后,就可以通过CTRL+滑动滚轮的方式,调整编辑器窗口的字体大小 4. tab 多行显示 这点因人而异,有些人喜欢直接取消所有tab,改用快捷键的方式,我屏幕比较大,所以喜欢把tab全部显示出来。 Window -> Editor Tabs -> Tabs Placement,取消勾选 Show Tabs In Single Row选项。
* l, U y" b1 K ) O" E Y* m% J
+ Z: [; d5 T5 t2 I" V# D% d: `" d& V
2 ?" {+ `; O) _- `/ w# `- c效果如下: , Q2 [5 F0 w' `- G
% M# d( Q; f$ a$ u3 J( K
5. 代码编辑区显示行号 Settings -> Editor -> General -> Appearance 勾选 Show Line Numbers 5 e% {2 G3 P0 V& e% [

/ _9 [5 W- X$ r4 N6 Z
" v F4 j; m5 L% }8 G7 W' _0 d/ I8 d& s H5 b) ]2 E" b; x

5 n4 v. p2 z+ g8 p, S: O6 K2 B- ^, K+ O% T8 K
3 @4 {% Q( b5 c+ p
日常使用 必备快捷键(★★) 查找 0 B/ g! z8 q4 W5 P' n3 n7 ]2 S5 d
! v, d h% d/ Y. Q
代码阅读相关 + S; q' R, M+ N W
0 w7 E. }# X2 x5 v& s
版本管理相关 & B2 V2 J8 ?% S
5 x, U) {. d2 E8 W
编码效率相关(★★) 文件代码模板 Settings -> Editor -> File and Code Template
/ R Y9 X% H/ L. _8 E# o
, s7 l& M% b) g; J3 p+ h" p
4 A2 U7 q E7 P6 S Q
6 L/ w2 _! b& J, M在这里可以看到IDEA所有内置的文件代码模板,当你选择某个文件生成时,就会按照这里面的模板生成指定的代码文件。 另外,你可以在这里设置文件头。
0 W e' w; h, ^# N! y $ G1 h4 F: B( j S( q3 L
7 q( F. M6 I4 R8 }$ [/ F2 Z; M% [$ h1 J& E! `0 r" D; }
设置之后,效果如下 # q; x. b/ y7 M% I% P! e, Z. {
6 |0 q; d8 f1 f; @
; b9 ?; v/ p# \3 U* Y' | Q( ^! K# a( i+ F
实时代码模板 IDEA提供了强大的实时代码模板功能,并且原生内置了很多的模板,比如,当你输入sout或者psvm,就会快速自动生成System.out.println();和public static void main(String[] args) {}的代码块。 , P5 F; `9 p1 e3 q( z. b5 N1 b
/ w; _4 M+ h4 S" {
4 o# Z) j8 b# M5 n8 z) [
. x/ b3 S2 n# h' m) c7 u! z! ^! O
这些的模板可以在Settings -> Editor -> Live Templates看到。使用者可以按照自己的使用习惯来熟悉相关的代码模板。
! B" F9 {" x* {; c1 e . j8 ]& C- r/ N( {+ n( `
0 n" T5 @: b+ h4 }. `. s9 ?4 i
5 e, W9 W, r1 \4 F- p8 Z定制代码模板 IDEA也提供自己定制实时代码模板的功能。 - 创建自己的模板库
- 创建定制的代码模板6 q8 K6 M% ^ n$ B$ G
" u8 v/ N& H+ Y! o 5 V) {1 k6 F+ p0 ~ Z0 w2 {& K( `$ |
' l0 P3 I# c7 t
; c7 Q) b* R7 l0 n9 ?* l9 z
图中的MyGroup就存放着我自己定义的代码模板。 其他 CRTL+ALT+T $ d0 S0 T9 E8 ~9 E e, k

4 A+ ^2 [8 o) c% r, d& t9 ?# r! P. S) J# P
, V2 n7 _' X8 z3 w* d1 l# XCtrl + Alt + T 提供的是代码块包裹功能 - Surround With。可以快速将选中的代码块,包裹到选择的语句块中。 本地历史版本 IDEA 自带本地版本管理的功能,能够让你本地编写代码变得更加的安心和方便。
/ J, `% }/ ?2 t" d- q6 C 0 Y* T4 Z8 }" i6 p
0 N: w3 L- a( W- N
+ B! r$ @6 D8 n$ I! }9 {
代码调试 源码阅读相关(★★★) 视图模式 / Q' u3 T* I4 K+ u% [# ^

) Z) G8 p1 V: p J2 N
7 e9 E# b6 z5 E: G, m# M( T( ?
; @1 B& Z2 R$ t9 o& w) r+ ~# y0 H' CIDEA提供两种特殊的视图模式, - Presentation Mode - 演示模式,专门用于Code Review这种需要展示代码的场景
- Distraction Free Mode - 禅模式,专注于代码开发! q9 u8 F& `& X0 L L, h; r
代码调试 1. 条件断点 IDEA 可以设置指定条件的断点,增加我们调试的效率。 # g a5 `! ]) y5 `' ^6 E1 a2 T' r
3 F, r4 a( P6 Q/ y5 W
9 {1 _) v! M1 b* j" i- a( W( c7 s
, n# a& B# C3 R* @1 j+ p. w2. 强制返回 IDEA 可以在打断点的方法栈处,强制返回你想要的方法返回值给调用方。非常灵活!
1 j( x2 Z2 O1 x! c' U
/ ^) N1 n y7 p% L# O3 p" C% B: }' L: {+ a( E2 t$ s! d% Y
' s9 e& e( ?& c- N4 U3 d- n

. A# Y" i, t: j: s
- f O2 n4 t3 L) v1 o3. 模拟异常 IDEA 可以在打断点的方法栈处,强制抛出异常给调用方。这个在调试源码的时候非常有用。 - ~( g9 W/ Q* E9 W. |
. r7 f& z3 K- \$ M& d' K" ?
4. Evaluate Expression IDEA 还可以在调试代码的时候,动态修改当前方法栈中变量的值,方便我们的调试。
' m) M: f6 S: g ~; w ` ! L5 h; r7 ~6 U3 H/ d
- n3 t. ^% p$ K4 S6 N/ W! o% p6 E5 f" U+ b- a
插件方面 插件安装 File -> Setting -> Plugin 插件安装,可以直接在IDEA的插件库中实时搜索安装。browse plugin repository 对于网络不好的用户,可以登录官方插件仓库地址:plugins.jetbrains.com/idea,下载压缩包之后,选择install from disk 插件推荐 本人日常开发中使用的插件 Alibaba Java Coding Guidelines 阿里Java编程规约插件 FindBugs 代码缺陷扫描 % b! F8 q8 }- P- ~- a5 }+ N
! Q- ~1 w- e" P% S$ `
+ O' l7 ]: k/ T* J' w% O0 [ , O$ A( i: q1 p+ f' g6 s8 j: s
. i. E5 u7 S" W9 G) r0 k1 R2 Y- t
9 g" H" n% {# W2 P' L3 o1 R0 sPMD 代码缺陷扫描 InnerBuilder builder模式快速生成
?. P# v% A/ S$ A; L' T # w: S6 [8 ~2 F. }% {" N, Z# y
2 n5 A" K; ?# R* g8 A2 c
8 J1 ]2 i3 }. H6 F% ?" j
lombok plugin lombok 插件 maven helper maven 依赖管理助手 ,解析maven pom结构,分析冲突;
: e% l& N: {# A) H3 v
2 d ~2 B9 O, m" _
" ]) |4 G& C. L- p' r8 m% i, S. l
! Q% G: f; {! B9 X/ K$ D + ], W5 K5 v1 a9 m1 u; d( ^& F
8 M+ w3 M7 L3 u& l
/ }% a/ g5 s n$ N( i( e
Rainbow brackets 让代码中的括号更具标识性 + S+ S! a" A2 x# H$ k
! e/ Q, ^ H8 a6 b3 h; P
2 P' c0 x v4 a! ^% {* K! ~$ r' R! I3 Y
9 J* [7 R7 c4 q2 u' |: ~String Manipulation String相关辅助简化,搭配 CTRL+W 、ALT+J等文本选择快捷键使用 : L) J4 h$ Q2 b2 o* D
5 d+ y Y( O9 ^/ H/ A
Translation 翻译插件,阅读源码必备 ) m3 n( x; t" e* u# Q& y, d
% \; x% j* B" G: J" G" t
& H% v- w6 f/ A$ X3 }/ m' |9 T& t% K% A: Z" t, Z

/ [5 O# y2 \. {1 S! C( d+ n$ `1 D+ B* c# o% f0 C0 S
7 A8 R6 r# F0 y `6 {GenerateAllSetter 
4 ~6 u# v- q. y3 i- r. s( k& }2 Z: v3 f& Z
Key Promoter X 对你的鼠标操作进行 快捷键提示 - W( W& h7 D3 F0 m2 V+ `

f9 a0 g# o1 j( @
! P4 i. |# z3 k0 p( W8 C3 _
( Y+ `+ E7 B1 iGenerateSerialVersionUID Alt + Insert 快速生成SerialVersionUID
' I# h/ R: r. u! e& j6 t4 `
' Z2 M* U1 |0 ?2 K8 U- v4 D r) l K5 {2 I5 F
6 v' z* z! m3 e$ ]2 t' T7 e8 s- [
GsonFormat 2 Y# j& P8 @( C3 _2 e) ~
% |0 b6 `9 d8 m% k
RestfulToolkit - 快速跳转到Restful Api处( use: Ctrl(Command) + \ or Ctrl + Alt + N )
- 展示Resultful 接口结构
- http 简单请求工具
- U1 n4 A: i w: N$ s7 P, D% v
1 d' P" g7 ?' d5 b: M
. P$ v# ?4 h1 I5 l4 f+ |- i( O! D# h
) i' C7 T) V- a

3 d2 N% c. E: }& P* @
! ?0 ?5 n4 g* Z# k' i; g& c6 V" o) x% D! d/ g, v# W: q
Material Theme UI 本人自用的主题就是这个。
. t, T% t: [7 E; M2 A; g; L
3 \+ P8 ~9 f2 ]' f
# z( r. {! n) g7 s. s
; A4 D/ r- J/ g* b- l! V% E& tMyBatis Log Plugin 把 Mybatis 输出的sql日志还原成完整的sql语句,看起来更直观。 $ U8 m& r \; @& A7 ?+ y0 v: i# t
4 }) ^% M7 q, y/ z; t
2 k# T% H& t' K2 r. }! n5 N6 b. h- L Q' h" X* T- \4 ? m
" c3 d( y* ~5 _; k5 R" |# Y' q |