說明:詳情請參考慕課網課程:IntelliJ IDEA神器使用技巧:http://www.imooc.com/learn/924(感謝課程做者:閃電俠)java
推薦:git
1. 課程老師(閃電俠)IDEA快捷鍵總結文檔:https://github.com/lightningMan/config/blob/master/intellij/shortcut-readme.mdgithub
2. 另外一位學習課程的同窗(夜空中最亮的慶)的總結,也寫的用心:https://www.jianshu.com/p/131c2deb3ecf
app
3. 下面是我本身總結:ide
快捷鍵函數
文件操做:
Ctrl+Alt+insert: 建立Class文件,文件夾...
F5:複製文件
F6:移動文件
Ctrl + C: 複製文件名
Ctrl + Shift + C:複製文件路徑
Ctrl + V:粘貼
Ctrl + Shift + V:批量粘貼(調用剪切板)
Ctrl + Alt + T: Surround With, 可用於try...catch,如圖
智能返回:
Ctrl+Alt+V:智能返回響應類型結果
行操做:
1. Shift+Enter: 向下插入一行
2. Ctrl+Alt+Enter: 向上插入一行
列操做
1. Alt+鼠標左鍵:列編輯
2. Ctrl+Alt+Shift+J: 選中全部被選中的符號(例如:選中全部的分號)
3. Ctrl+向右箭頭:移動光標到下一個單詞
4. Ctrl+Shift+向右箭頭:移動光標到下一個單詞並選中
5. Shift+Home: 移動光標到行首並選中
6. Shift+End: 移動光標到行尾並選中
7. F2/Shift+F2: 快速向下(上)定位到錯誤行
8. Alt+insert: 生成構造方法,get/set方法,覆寫方法,toString()...
9. Alt+enter: 智能提示
Postfix:後綴,Postfix(for, sout, field(name.field)...還有不少默認的,後續再研究)
1. 100.for
2. date.sout
3. "String".r + 向上箭頭
4. name.nn(非空判斷), name.null(爲空判斷)
1 import java.util.Date; 2 3 /** 4 Postfix:後綴,Postfix(for, sout, field(name.field)...還有不少默認的,後續再研究) 5 1. 100.for 6 2. date.sout 7 3. "String".r + 向上箭頭 8 9 4. name.nn, name.null 10 11 */ 12 public class Postfix { 13 14 public static void main(String[] args) throws InterruptedException { 15 for (int i = 0; i < 100; i++) { 16 Date date = new Date(); 17 Thread.sleep(1000); 18 System.out.println(date); 19 } 20 } 21 private String name = "zs"; 22 private int age = 20; 23 24 private String getStr(){ 25 if (name != null) { 26 27 } 28 if (name == null) { 29 30 } 31 return "string"; 32 } 33
Alt+enter:智能提示
1 import java.util.List; 2 3 /** 4 AltEnter: 智能提示 5 注:ctrl+alt+insert: 建立Class文件,文件夾... 6 1. 自動建立函數 7 2. List replace 8 3. 字符串的format或者build 9 4. 單詞拼寫 10 5. 導包 11 */ 12 public class AltEnter { 13 /** 14 * 1. 自動建立函數 15 * 2. List replace 16 * @param args 17 */ 18 public static void main(String[] args) { 19 fuc1(); 20 fun3(); 21 } 22 23 private static String fuc1() { 24 25 return "string"; 26 } 27 28 /** 29 * 2. List replace 30 * @param list 31 */ 32 private static void fun2(List<String> list) { 33 int i = 0; 34 while (true) { 35 if (!(i < list.size())) break; 36 37 i++; 38 } 39 } 40 41 /** 42 * 3. 字符串的format或者build 43 */ 44 private static void fun3() { 45 String name = "zs"; 46 int age = 20; 47 String x1 = String.format("name: %s, age: %d", name, age); 48 String x2 = new StringBuilder().append("name: ").append(name).append(", age: ").append(age).toString(); 49 System.out.println(x1); 50 System.out.println("---------------"); 51 System.out.println(x2); 52 53 } 54 }
重構與抽取:
重構:
Shift+F6:重構變量
Ctrl+F6:重構方法(或Alt+Enter)
抽取:
Ctrl+Alt+V:抽取變量
Ctrl+Alt+C:抽取靜態常量
Ctrl+Alt+F:抽取成員變量(字段)
Ctrl+Alt+P:抽取方法參數
Ctrl+Alt+M:抽取方法
1 /** 2 * 重構變量與重構方法 3 */ 4 public class RefactorDemo { 5 public static final String DEFAULT_NAME = "chris"; 6 private int age; 7 8 /** 9 * 重構變量: shift+F6 10 */ 11 public static void fun(String firstName) { 12 System.out.println(firstName); 13 System.out.println(firstName); 14 System.out.println(firstName); 15 System.out.println(firstName); 16 System.out.println(firstName); 17 fun2("Lee", DEFAULT_NAME); 18 } 19 /** 20 * 重構方法: ctrl+F6或者alt+enter 21 */ 22 public static String fun2(String firstName, String lastName) { 23 24 System.out.println(firstName+lastName); 25 return firstName+lastName; 26 } 27 /** 28 * 抽取變量:Ctrl+alt+v 29 */ 30 public static void extract1() { 31 String name = DEFAULT_NAME; 32 System.out.println(name); 33 System.out.println(name); 34 System.out.println(name); 35 System.out.println(name); 36 System.out.println(name); 37 System.out.println(name); 38 System.out.println(name); 39 } 40 /** 41 * 抽取靜態常量:Ctrl+alt+C 42 */ 43 public static void extract2() { 44 // public static final String DEFAULT_NAME = "chris"; 45 System.out.println(DEFAULT_NAME); 46 System.out.println(DEFAULT_NAME); 47 System.out.println(DEFAULT_NAME); 48 System.out.println(DEFAULT_NAME); 49 } 50 /** 51 * 抽取成員字段:Ctrl+alt+F 52 */ 53 public void extract3() { 54 age = 20; 55 extract4(age); 56 System.out.println(age); 57 } 58 59 /** 60 * 抽取方法參數:Ctrl+alt+P 61 * @param length 62 */ 63 public void extract4(int length){ 64 System.out.println(length); 65 System.out.println(length); 66 System.out.println(length); 67 System.out.println(length); 68 System.out.println(length); 69 } 70 71 /** 72 * 抽取方法:Ctrl+alt+M 73 */ 74 public void extract5(){ 75 init(); 76 sevice(); 77 destroy(); 78 } 79 80 private void destroy() { 81 System.out.println("extract method"); 82 System.out.println("extract method"); 83 } 84 85 private void sevice() { 86 System.out.println("extract method"); 87 System.out.println("extract method"); 88 } 89 90 private void init() { 91 System.out.println("extract method"); 92 System.out.println("extract method"); 93 } 94 }
Git集成與版本控制:單元測試
annotate:鼠標右鍵,查看當前行代碼是由何人,什麼時候編輯及修改
Ctrl+Alt+Shift+向上箭頭/向下箭頭: 上次修改的地方previous change
Ctrl+Alt+Z:撤銷,能夠針對於行,文件,文件夾
local history: 本地修改歷史
show history: 查看歷史
show label: 查看標記歷史
斷點調試(直接界面操做):
Ctrl + F8:添加/取消斷點
Shift + F10:運行
Shift + F9:調試
F8:單步運行
F9:調到下一個斷點
Ctrl + Shift + F8:查看全部斷點
Mute Breakpoints:禁止全部斷點
Ctrl + Shift + F8:條件斷點
Alt + F8:動態求值
Alt + F9:運行到指定行(Run to Cursor)
F2:動態改變值
Ctrl + Shift + F9:上下文運行,用在單元測試中方便
Alt + Shift + F9:運行最近的文件
結構圖:Ctrl + F12:查看結構圖Ctrl + H:查看類的繼承結構體系Ctrl + Alt + U:查看類的繼承結構體系圖Ctrl + H:查看方法調用誰,被誰調用