前言
本文並不打算簡單羅列 IntelliJ IDEA 快捷鍵,而是教你如何通過刻意的練習,來掌握IntelliJ IDEA 快捷鍵的操作。需要注意的是本文操作均使用Mac進行演示。文中會介紹如何查看 Windows 快捷鍵。
爲什麼要熟練使用你的開發工具
「程序員修煉之道」中有一段關於使用編輯器的內容如下:
❝要用好你的編輯器,在你開發時將其操作變成你的本能反應,使編輯器變成你雙手的延伸。
❞
這樣做的好處是:可以大大提高我們的開發效率。而一名優秀的程序員必備的特性之一就是:開發效率高
。
爲了強調其重要性,作者並專門將其提煉成一個珠璣:
❝Use a Single Editor Well 用好一種編輯器
❞
針對用好編輯器書中給出如下操作方式指導:
如果這聽起來像你...... | 那麼考慮...... |
---|---|
我使用許多不同的編輯器,但是隻使用其基本特性。 | 選擇一種強大的編輯器,好好學習它。 |
我有最喜歡的編輯器,但不使用其全部特性。 | 學習它們,減少你需要敲擊的鍵數。 |
我有最喜歡的編輯器,只要可能就使用它。 | 設法擴展它,並將其用於比現在更多的任務。 |
我認爲你們在胡說,notepad 就是有史以來最好的編輯器 | 只要你願意,並且生產效率很高,那就這樣吧!但如果你發現自己在羨慕別人的編輯器,你可能要重新評估自己的位置了。 |
正是由於本書的啓發,我下定決心想寫一篇關於 IntelliJ IDEA 開發工具快捷鍵的介紹。閒話少說,接下來開始正式IDEA 操作之旅!
Mac鍵盤符號說明
首選需要說明的是本文內容是基於Mac系統進行演示的,因爲在IntelliJ IDEA 中快捷鍵都是通過鍵盤符號來展示的,所以在介紹快捷操作前,我們需要先了解一下 Mac系統鍵盤符號。如果你已瞭解,可以繞過該小節內容。
Mac Intelli IDEA 中使用頻率比較高按鍵有:
-
Command(或 Cmd)⌘
-
Shift ⇧
-
Option(或 Alt)⌥
-
Control(或 Ctrl)⌃
-
Return ↩︎
-
Delete ⌫
-
Tab ⇥
-
上箭頭 ↑
-
下箭頭 ↓
-
左箭頭 ←
-
右箭頭 →
-
Page Up(Fn+↑)⇞
-
Page Down(Fn+↓)⇟
-
右製表符(Tab鍵)⇥
-
左製表符(Shift+Tab)⇤
-
Escape (Esc) ⎋
基礎編輯操作
基礎操作包括:選擇、註釋、刪除、複製、移動、多重選擇。還有一個最重要的操作就是:快捷鍵搜索,可以通過搜索方式查詢忘記的快捷鍵。
Find Action 快捷鍵搜索
-
Command+Shift+A (⌘⇧A) 搜索快捷鍵。
例如:你想查詢註釋行的快捷鍵,執行 Command+Shift+A 然後輸入 Comment Line 就可以看到註釋行的快捷鍵就是 Cmd+/
image.png
Select 選擇操作
選擇操作更多是能讓你解脫鼠標或控制面板。
-
Alt+Shift+右箭頭(⌥⇧→):一個一個單詞進行選中。
-
Alt+上箭頭(⌥↑):按照代碼塊進行選中。
-
Alt+下箭頭(⌥↓):減少代碼塊選中。
-
Cmd+A(⌘A):全選。
Comment Line 註釋行
-
Cmd+/(⌘/):註釋光標所在行代碼,再次執行則取消註釋。也可以選中多行後註釋多行。
Delete Line 刪除行
-
Cmd+刪除鍵(⌘⌫):刪除光標所在行內容。
-
Cmd+Z(⌘z): 撤銷剛纔的操作。
Duplicate:複製
-
Cmd+D(⌘d):複製光標所在行內容,你也可以選擇多行進行復制。
Move:移動
-
Alt+Shift+下箭頭(⌥⇧↓):向下移動光標所在行代碼。
-
Alt+Shift+上箭頭(⌥⇧↑):向上移動光標所在行代碼。
-
Cmd+Shift+下箭頭(⌘⇧↓):向下移動光標所在方法的代碼。
-
Cmd+Shift+上箭頭(⌘⇧↑):向上移動光標所在方法的代碼。
Multiple Selections 多重選擇
-
Ctrl+G(⌃g):選擇下一個需要批處理的符號。
-
Ctrl+Shift+G(⌃⇧g):取消最後需要批處理的符號。
-
ESC:取消所有批處理操作。
-
Cmd+Ctrl+G(⌘⌃g):全選批處理符號內容。
Collapse:摺疊
-
Cmd+
-
(⌘-):摺疊光標所在方法代碼。 -
Cmd+
+
(⌘+):展開光標所在方法的代碼。 -
Cmd+Shift+
+
(⌘⇧+):展開所有方法代碼。 -
Cmd+Shift+
-
(⌘⇧-):摺疊所有方法代碼。
Code Completion 代碼智能提示
當執行代碼智能提示快捷鍵後會彈出可能補全的代碼,可以通過回車或者Tab 鍵進行選擇。
Basic Completion 智能補全
-
Ctrl+空格(⌃Space):對於未完成代碼進行智能補全提示。
-
Ctrl+2次空格(⌃2Space):對於未完成代碼進行智能補全提示。
Smart Type Completion 智能類型補全
-
Ctrl+Shift+空格(⌃⇧Space):對於未完成代碼進行智能類型補全提示。
-
Ctrl+Shift+2次空格(⌃⇧2Space):對於未完成代碼進行智能類型補全提示。
Postfix Completion
Postfix Completion 是通過 .+後綴的方式完成類似 Live Template 的操作。Postfix Completion可以通過簡單的後綴可以快捷生成你想要的代碼,大大提高開發的效率。
我經常使用的Postfix列表:
-
.sout:快速爲字符串生成打印代碼。
-
.if:爲條件判斷生成if判斷結構代碼。
-
.notnull/.nn:生成對象不爲null if判斷結構代碼。
-
.null:生成對象爲null if判斷結構代碼。
-
.renturn:生成返回對象代碼,map.rentrun == rentrun map
-
.new:生成對象代碼,Person.new == new Person();
-
.fori:生成普通for循環代碼結構。
-
.for:生成增強for循環代碼結構。
sout 和 if 使用示例如下:
image.png
image.png
如果你想了解更多 Postfix 可以通過 Find Action(⌘⇧A)搜索 Postfix Completion 點擊進入。
image.png
如下圖所示,你可以看到所有的 Postfix 介紹和使用方式。
Statement Completion 完成代碼
-
Cmd+Shift+回車(⌘⇧↩︎):自動添加結束符號;或者{}
Completion with Tab
-
Ctrl+空格(⌃Space)+Tab:智能提示列表的切換。例如:彈出公共字典類常量列表,然後使用Tab 使用選中的常量。
Refactorings 重構
Rename 重命名
-
Shift+F6(⇧F6):重新命名類名、方法名、文件名、變量名。
Extract Variable/Field 提取變量
-
Cmd+Alt+V(⌘⌥V):快速將代碼中重複內容變成統一的變量。
Extract Constant 提取靜態常量
-
Cmd+Alt+C(⌘⌥C):快速將代碼中重複內容變成統一的靜態常量。
Extract Method 提取方法
-
Cmd+Alt+M(⌘⌥M):快速將多行代碼提取成一個方法。
Extract Parameter 提取方法參數
-
Cmd+Alt+P(⌘⌥P):快速將方法內的變量提取爲方法的參數。
Code Assistance 代碼協助
Code Formatting 代碼格式化
-
Cmd+Alt+L(⌘⌥L):格式化文件的代碼。
Parameter Info 參數信息提示
-
Cmd+P(⌘P):顯示光標所在方法參數信息。
Quick Popups 查看文檔信息
-
F1/Ctl+J(⌃J):查看方法文檔信息。(光標在方法上)。
-
ESC(⎋ ):退出查看方法文檔信息。
-
Alt+Space(⌥Space):查看方法具體邏輯(光標在方法上)。
Editor Coding Assistance
-
F2:跳轉到有錯誤信息代碼處。Cmd+F1(⌘F1):查看錯誤信息。
-
Alt+回車(⌥↩︎):快速處理錯誤信息。
-
Cmd+Alt+T(⌘⌥T):快速添加try catch 待修改
-
Cmd+Shift+F7(⌘⇧F7):高亮顯示和選中文本相同的變量。
Navigation 導航
Jump to Source 查看源碼
-
Cmd+下箭頭(⌘↓):跳轉查看源碼。
Declaration/Implementation
-
Cmd+B(⌘B):跳轉到一個類或者接口。Cmd+Alt+B:查看類或者接口的實現。
File Structure 文件結構
-
Cmd+F12(⌘F12):查看類的大綱視圖。
Next/Previous Occurrences
-
Cmd+F(⌘F):搜索文件中的字符。
-
回車/Cmd+G(⌘G):查找下一個匹配的字符。
-
Cmd+Shift+G(⌘⇧G):查找上一個匹配的字符。
❝關閉 查找窗口後你仍然可以使用選中進行上一個/下一個查找。
❞
到這裏一些常用最爲基礎的快捷鍵操作介紹完畢,看到這裏你是不是也還是很....
你在開頭不是說你不是簡單羅列 Intelli IDEA 快捷鍵嗎!
不要急,不要急。聽我說。接下來我將隆重介紹一款IDEA快捷鍵操作神器:IDE Features Trainer。上述操作介紹均來自該插件實際操作內容。
當你安裝完這個插件後會看到一個 Learn的圖標,如下圖所示:
image.png
點擊每個小結進入後跟着提示進行操作,當你操作完畢後需要執行的內容會變灰,直到最後一個操作執行完畢後,會提示你進入下一個學習。具體效果如下:
如何你是Windows 系統用戶,在你的IDEA中安裝這個插件即可練習快捷鍵了。
文章最後我特意又搞了幾個小練習,也是對你操作的小測試。需要注意的是以下練習均不能使用鼠標進行操作。
練習測試
基礎編輯操作綜合練習
完成下面一段代碼操作,操作步驟如下:
-
複製 System.out.println("select") 到下一行20次。
-
選中整個select方法並複製到下一行,並將複製方法名改爲fun
-
修改fun方法中的20個select爲fun
-
刪除掉一個打印fun代碼
未修改前的代碼:
public class EditorBasic {
public void select(){
System.out.println("select");
//Cmd+D 19次
//Cmd+Shift+右箭頭 選中一個打印語句
//Alt+上箭頭選中整個方法
// Cmd+D 複製選中的方法
}
}
按照操作步驟執行後的代碼:
public class EditorBasic {
public void select(){
System.out.println("select");
//省略19行一樣的代碼
}
public void fun(){
System.out.println("fun");
//省略18行一樣的代碼
}
}
智能提示操作綜合練習
未修改前的代碼:
public class Person {
private String name;
private Integer type;
}
```java
public class CommonConstants {
public static final int VIP = 1;
public static final int ORDINARY=0;
}
public class CodeCompletion {
private String name="name";
private String age="age";
Map<String,String> map = null;
public void fun() {
initMap();
map.forEach((k,v)->{
Person person = new Person();
person.setName(k);
person.setType(CommonConstants.VIP);//Ctrl+空格 Tab
//if (k.startsWith("zhuoqianmingyue")) Cmd+Shift+回車
if
/*
if (k.startsWith("zhuoqianmingyue")) {
person.setType(CommonConstants.VIP);//Ctrl+空格 Tab
}
*/
});
}
private Map<String,String> initMap() {
map = buildMap();
map.put(name, "zhuoqianmingyue_1");
map.put(name, "zhuoqianmingyue_2");
map.put(name, "zhangsan");
map.put(name, "lishi");//Ctrl+Shift+空格
return //Ctrl+Shift+空格
}
private Map<String,String> buildMap() {
return Collections.emptyMap(); //Ctrl+Shift+空格
}
}
操作後的代碼:
操作步驟請參考註釋
public class CodeCompletion {
private String name="name";
private String age="age";
Map<String,String> map = null;
public void fun() {
initMap();
map.forEach((k,v)->{
Person person = new Person();
person.setName(k);
person.setType(CommonConstants.ORDINARY);
if (k.startsWith("zhuoqianmingyue")) {
person.setType(CommonConstants.VIP);
}
});
}
private Map<String,String> initMap() {
map = buildMap();
map.put(name, "zhuoqianmingyue_1");
map.put(name, "zhuoqianmingyue_2");
map.put(name, "zhangsan");
map.put(name, "lishi");
return map;
}
private Map<String,String> buildMap() {
return Collections.emptyMap();
}
}
重構操作綜合練習
這個練習不給任何提示,通過前後代碼對比,你可以使用到哪些快捷鍵?自己探索一下。
操作前的代碼:
public class HuMan {
private String name;
private String type;
public void say(String content){
System.out.println(content);
}
//省略getter and setter
}
public class Refactorings {
public void fun(){
//結巴男
HuMan man = new HuMan();
man.setType("man");
man.say("a");
man.say("a");
man.say("a");
//正常女
HuMan woman = new HuMan();
woman.setType("woman");
woman.say("a");
}
}
操作後的代碼
public class Refactorings {
public void fun(){
//結巴男
String content = "a";
HuMan man = manSay(new HuMan(), content);
//正常女
woManSay(man, content);
}
private HuMan manSay(HuMan man, String content) {
man.setType("man");
man.say(content);
man.say(content);
man.say(content);
return man;
}
private void woManSay(HuMan man, String content) {
HuMan woman = new HuMan();
woman.setType("woman");
woman.say(content);
}
}
小結
練好一個工具操作沒有什麼捷徑可走,唯有不斷的刻意練習方能掌握。最後需要說明的是IDE Features Trainer 中僅提供常用快捷鍵操作,正所謂:快捷無止境,勸君繼續探索。