Intelli IDEA 快捷鍵操作,咱來點不一樣的

前言

本文並不打算簡單羅列 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中安裝這個插件即可練習快捷鍵了。

文章最後我特意又搞了幾個小練習,也是對你操作的小測試。需要注意的是以下練習均不能使用鼠標進行操作。

練習測試

基礎編輯操作綜合練習

完成下面一段代碼操作,操作步驟如下:

  1. 複製 System.out.println("select") 到下一行20次。

  2. 選中整個select方法並複製到下一行,並將複製方法名改爲fun

  3. 修改fun方法中的20個select爲fun

  4. 刪除掉一個打印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 中僅提供常用快捷鍵操作,正所謂:快捷無止境,勸君繼續探索。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章