Android Studio 不得不知道的一些快捷鍵

常用技巧

1. 書(shū)簽(Bookmarks)

  • 描述:這是一個(gè)很有用的功能,讓你可以在某處做個(gè)標(biāo)記(書(shū)簽),方便后面再跳轉(zhuǎn)到此處。
  • 調(diào)用:Menu → Navigate → Bookmarks
  • 快捷鍵
    1. 添加/移除書(shū)簽:F3(OS X) 、F11(Windows/Linux);
    2. 添加/移除書(shū)簽(帶標(biāo)記):Alt + F3(OS X)、Ctrl + F11(Windows/Linux);
    3. 顯示全部書(shū)簽:Cmd + F3(OS X) 、Shift + F11(Windows/Linux),顯示所有的書(shū)簽列表,并且是可以搜索的。
    4. 上一個(gè)/下一個(gè)書(shū)簽:無(wú),可以在設(shè)置中設(shè)置快捷鍵。
  • 更多:當(dāng)你為某個(gè)書(shū)簽指定了標(biāo)記,你可以使用快捷鍵 Ctrl + 標(biāo)記 來(lái)快速跳轉(zhuǎn)到標(biāo)記處,比如輸入Ctrl + 1,跳到標(biāo)記為1的書(shū)簽處。

2. 折疊/展開(kāi)代碼塊(Collapse Expand Code Block)

  • 描述:該操作提供一種方法,讓你隱藏你不關(guān)心的部分代碼,以一種較為簡(jiǎn)潔的格式顯示關(guān)鍵代碼。一個(gè)有意思的用法是隱藏匿名內(nèi)部類的代碼,讓其看起來(lái)像一個(gè)Lambda表達(dá)式。
  • 快捷鍵:Cmd + “+”/”-“(OS X)、Ctrl + Shift + “+”/”-“(Windows/Linux);
  • 更多:可以在Settig → Editor → General → Code Folding 中設(shè)置折疊規(guī)則。

3. 與分支比對(duì)(Compare With Branch (Git))

  • 描述:假如你的項(xiàng)目是使用git來(lái)管理的,你可以將當(dāng)前文件或者文件夾與其他的分支進(jìn)行比對(duì)。比較有用的是可以讓你了解到你與主分支有多少差別。
  • 調(diào)用:Menu → VCS → Git → Compare With Branch

4. 與剪切板比對(duì)(Compare With Clipboard)

  • 描述:將當(dāng)前選中的部分與剪切板上的內(nèi)容進(jìn)行比對(duì)。
  • 調(diào)用:右鍵選中的部分,在右鍵菜單中選擇“Compare With Clipboard”。

5. 上下文信息(Context Info)

  • 描述:當(dāng)前作用域定義超過(guò)滾動(dòng)區(qū)域,執(zhí)行該操作將顯示所在的上下文信息,通常它顯示的是類名或者內(nèi)部類類名或者當(dāng)前所在的方法名。該操作在xml文件中同樣適用。
  • 調(diào)用:Menu → View → Context Info
  • 快捷鍵:Alt + Q (Windows/Linux)
  • 更多:個(gè)人認(rèn)為,這個(gè)功能更好的用法是快速查看當(dāng)前類繼承的父類或者實(shí)現(xiàn)的接口。

6. 查找操作(Find Action)

  • 描述:輸入某個(gè)操作的名稱,快速查找,對(duì)于沒(méi)有快捷鍵的部分操作這是一個(gè)很有用的技巧。
  • 快捷鍵:Cmd +Shift + A(OS X)、Ctrl + Shift + A(Windows/Linux);
  • 更多:當(dāng)某個(gè)操作是有快捷鍵的,會(huì)顯示在旁邊。

7. 查找補(bǔ)全(Find Complection)

  • 描述:當(dāng)你在一個(gè)文件中進(jìn)行查找時(shí),使用自動(dòng)補(bǔ)全快捷鍵可以給出在當(dāng)前文件中出現(xiàn)的建議單詞;
  • 快捷鍵:Cmd + F(OS X),Ctrl + F(Windows/Linux),輸入一些字符,然后使用自動(dòng)補(bǔ)全;

8. 隱藏所有面板(Hide All Panels)

  • 描述:切換編輯器鋪滿整個(gè)程序界面,隱藏其他的面板。再次執(zhí)行該操作,將會(huì)回到隱藏前的狀態(tài)。
  • 調(diào)用:Menu → Window → Active Tool Window → Hide All Windows;
  • 快捷鍵:Cmd +Shift + F12(OS X)、Ctrl + Shift + F12(Windows/Linux);

9. 高亮一切(Hightlight All the Things)

  • 描述:該操作將會(huì)高亮某個(gè)字符在當(dāng)前文件中所有出現(xiàn)的地方。這不僅僅是簡(jiǎn)單的匹配,實(shí)際上它會(huì)分析當(dāng)前的作用域,只高亮相關(guān)的部分。
  • 調(diào)用:Menu → Edit → Find → Highlight Usages in File;
  • 定位到上一處/下一處:Menu → Edit → Find → Find Next/Previous;
  • 快捷鍵:相關(guān)快捷鍵請(qǐng)?jiān)诓藛沃胁榭矗?/li>
  • 更多
    1. 如果高亮一個(gè)方法的 returnthrow 語(yǔ)句,將會(huì)高亮這個(gè)方法的所有出口/結(jié)束點(diǎn);
    2. 如果高亮某個(gè)類定義處的 extendimplements 語(yǔ)句,將會(huì)高亮繼承的或?qū)崿F(xiàn)的方法;
    3. 高亮一個(gè) import 語(yǔ)句也會(huì)高亮使用到的地方;
    4. 按下Esc可以退出高亮模式;

10. 上一個(gè)編輯位置(Last Edit Location)

  • 描述:該操作將使得你導(dǎo)航到上一處你改動(dòng)過(guò)的地方,這與點(diǎn)擊工具欄上的返回箭頭回到上一個(gè)定位位置是不一樣的,該操作將會(huì)返回到上一個(gè)編輯的位置。
  • 快捷鍵: Cmd + Shift + Delete(OS X)、Ctrl + Shift + Backspace(Windows/Linux);

11. 定位到嵌套文件(Navigate to Nested File)

  • 描述:有時(shí)你有一堆存放在不同目錄下的同名文件,例如不同模塊下的 AndroidManifest.xml 文件,當(dāng)你想定位到其中的一個(gè)文件,你會(huì)得到一堆搜索結(jié)果,你還得辨認(rèn)哪個(gè)才是你需要的。通過(guò)在檢索框中輸入部分路徑的前綴,并添加斜杠號(hào),你就可以在第一次嘗試的時(shí)候就找到正確的那個(gè)。
  • 快捷鍵:Shift + Cmd + O(OS X)、Shift + Ctrl + N(Windows/Linux);

12. 定位到父類(Navigate to parent)

  • 描述:如果光標(biāo)是在一個(gè)繼承父類重寫(xiě)的方法里,這個(gè)操作將定位到父類實(shí)現(xiàn)的地方。如果光標(biāo)是在類名上,則定位到父類類名。
  • 調(diào)用:Menu → Navigate → Super Class/Method
  • 快捷鍵:Cmd + U(OS X)、Ctrl + U(Windows/Linux);

13. 根據(jù)編號(hào)打開(kāi)面板(Open a Panel by Its Number)

  • 描述:你可能已經(jīng)注意到某些面板的名稱左邊有一個(gè)數(shù)字,這里有個(gè)快捷操作可以打開(kāi)它們。如果你沒(méi)看到面板的名稱,請(qǐng)點(diǎn)擊IDE的左下角的切換按鈕。
  • 快捷鍵:Cmd + 數(shù)字(OS X)、Alt + 數(shù)字(Windows/Linux);

14. 參數(shù)信息(Parameter Info)

  • 描述:這個(gè)操作將顯示和你在方法聲明處寫(xiě)一樣的參數(shù)列表,當(dāng)你想看某個(gè)存在的方法的參數(shù),這是一個(gè)很有用的操作。光標(biāo)下的參數(shù)顯示為黃色,如果沒(méi)有參數(shù)顯示黃色,意味著你的方法調(diào)用是無(wú)效的,很可能是某個(gè)參數(shù)分配不對(duì)。(例如一個(gè)浮點(diǎn)數(shù)賦值給了整型參數(shù))。如果你正在寫(xiě)一個(gè)方法調(diào)用,突然離開(kāi)編輯的地方,再返回的時(shí)候,輸入一個(gè)逗號(hào),就可以重新觸發(fā)參數(shù)信息。
  • 快捷鍵:Cmd + P(OS X)、Ctrl + P(Windows/Linux);

15. 快速查看定義(Quick Definition Lookup)

  • 描述:你曾經(jīng)是否想查看一個(gè)方法或者類的具體實(shí)現(xiàn),但是不想離開(kāi)當(dāng)前界面? 該操作可以幫你搞定。
  • 快捷鍵:Alt + Space (OS X)、Ctrl + Shift + I(Windows/Linux)

16. 最近修改的文件(Recently Changed Files)

  • 描述:該操作類似于“最近訪問(wèn)(Recents)”彈窗,會(huì)顯示最近本地修改過(guò)的文件列表,根據(jù)修改時(shí)間排列。可以輸入字符來(lái)過(guò)濾列表結(jié)果。
  • 快捷鍵:Cmd + Shift + E(OS X)、Ctrl + Shift + E(Windows/Linux)

17. 最近訪問(wèn)(Recents)

  • 描述:該操作可以得到一個(gè)最近訪問(wèn)文件的可搜索的列表。
  • 快捷鍵:Cmd + E(OS X)、Ctrl + E(Windows/Linux)

18. 相關(guān)文件(Related File)

  • 描述:該操作有助于在布局文件和Activity/Fragment之間輕松跳轉(zhuǎn)。這也是一個(gè)快捷操作,在類名/布局頂端的左側(cè)。
  • 快捷鍵:Ctrl + Cmd + Up(OS X)、Ctrl + Alt + Home(Windows/Linux)

19. Select In

  • 描述:拿著當(dāng)前文件然后問(wèn)你在哪里選中該文件。恕我直言,最有用的就是在項(xiàng)目結(jié)構(gòu)或者資源管理器中打開(kāi)該文件。每一個(gè)操作都有數(shù)字或者字母作為前綴,可以通過(guò)這個(gè)前綴來(lái)快速跳轉(zhuǎn)。通常,我會(huì) Alt + F1 然后 回車(Enter) 來(lái)打開(kāi)項(xiàng)目視圖,然后 再用 Alt + F1 在OS X的 Finder 里找到文件。你可以在文件中或者直接在項(xiàng)目視圖里使用該操作。
  • 快捷鍵:Alt + F1;

20. 擴(kuò)大/縮小選擇(Extend/Shrink Selection)

  • 描述:該操作會(huì)在上下文逐漸擴(kuò)大/縮小當(dāng)前選擇范圍。例如,它會(huì)先選中當(dāng)前變量,再選中當(dāng)前語(yǔ)句,然后選中整個(gè)方法,縮小選擇則相反。
  • 快捷鍵:Alt + 上/下 (OS X)、Ctrl+W / Ctrl + Shift + W(Windows、Linux)

21. Sublime Text式的多處選擇(Sublime Text Multi Selection)

  • 描述:這個(gè)功能超級(jí)贊!該操作會(huì)識(shí)別當(dāng)前選中字符串,選擇下一個(gè)同樣的字符串,并且添加一個(gè)光標(biāo)。這意味著你可以在同一個(gè)文件里擁有多個(gè)光標(biāo),你可以同時(shí)在所有光標(biāo)處輸入任何東西。
  • 快捷鍵:Ctrl + G(OS X)、Alt + J(Windows、Linux)

22. 文件結(jié)構(gòu)彈窗(The File Structure Popup)

  • 描述:該操作可以展示當(dāng)前類的大綱,并且可以快速跳轉(zhuǎn)。你還可以通過(guò)鍵盤(pán)輸入來(lái)過(guò)濾結(jié)果。這是一種很高效的方法來(lái)跳轉(zhuǎn)到指定方法。
  • 更多
    1. 你在輸入字符的時(shí)候可以用駝峰風(fēng)格來(lái)過(guò)濾選項(xiàng)。比如輸入”oCr”會(huì)找到”onCreate”
    2. 你可以通過(guò)勾選多選框來(lái)決定是否顯示匿名類。這在某些情況下很有用,比如你想直接跳轉(zhuǎn)到一個(gè)OnClickListener的onClick方法。
  • 調(diào)用:Menu → Navigate → File Structure
  • 快捷鍵:Cmd + F12(OS X)、Ctrl + F12(Windows/Linux)

23. 切換器(The Switcher)

  • 描述:該快捷鍵基本上就是IDE的alt+tab/cmd+tab命令。你可以用它在導(dǎo)航tab或者面板切換。一旦打開(kāi)這個(gè)窗口,只要一直按著ctrl鍵,你可以通過(guò)對(duì)應(yīng)的數(shù)字或者字母快捷鍵快速選擇。你也可以通過(guò)backspace鍵來(lái)關(guān)閉一個(gè)已選中的tab或者面板。
  • 快捷鍵:Ctrl + Tab

24. 版本控制操作彈窗(VCS Operations Popup)

  • 描述:該操作會(huì)給你顯示最常用的版本控制操作。如果你的項(xiàng)目沒(méi)有用git等版本控制軟件進(jìn)行管理,它至少會(huì)給你提供一個(gè)由IDE維護(hù)的本地歷史記錄。
  • 快捷鍵:Ctrl + V(OS X)、Alt + `(Windows/Linux)

編碼技巧

1. 列選擇/塊選擇(Column Selection)

  • 描述:正常選擇時(shí),當(dāng)你向下選擇時(shí),會(huì)直接將當(dāng)前行到行尾都選中,而塊選擇模式下,則是根據(jù)鼠標(biāo)選中的矩形區(qū)域來(lái)選擇。
  • 調(diào)用:按住Alt,然后拖動(dòng)鼠標(biāo)選擇。
    開(kāi)啟/關(guān)閉塊選擇:Menu → Edit → Column Selection Mode
    快捷鍵:切換塊選擇模式:Cmd + Shift + 8(OS X)、Shift + Alt + Insert(Windows/Linux);

2. 語(yǔ)句補(bǔ)全(Complete Statement)

  • 描述:這個(gè)方法將會(huì)生成缺失的代碼來(lái)補(bǔ)全語(yǔ)句,常用的使用場(chǎng)景如下:
    1. 在行末添加一個(gè)分號(hào),即使光標(biāo)不在行末;
    2. 為if、while、for 語(yǔ)句生成圓括號(hào)和大括號(hào);
    3. 方法聲明后,添加大括號(hào);
  • 調(diào)用:Menu → Edit → Compelete Current Statement
  • 快捷鍵:Cmd + Shift + Enter(OS X)、Ctrl + Shift + Enter(Windows/Linux);
  • 更多:如果一個(gè)語(yǔ)句已經(jīng)補(bǔ)全,當(dāng)你執(zhí)行該操作時(shí),則會(huì)直接跳到下一行,即使光標(biāo)不在當(dāng)前行的行末。

3. 刪除行(Delete Line)

  • 描述:如果沒(méi)選中,則刪除光標(biāo)所在行,如果選中,則會(huì)刪除選中所在的所有行。
  • 快捷鍵:Cmd + Delete(OS X)、Ctrl + Y(Windows/Linux)

4. 行復(fù)制(Duplicate Line)

  • 描述:復(fù)制當(dāng)前行,并粘貼到下一行,這個(gè)操作不會(huì)影響剪貼板的內(nèi)容。這個(gè)命令配合移動(dòng)行快捷鍵非常有用。
  • 快捷鍵:Cmd + D(OS X)、Ctrl + D(Windows/Linux)

5. 編寫(xiě)正則表達(dá)式(Edit Regex)

  • 描述:使用Java編寫(xiě)正則表達(dá)式是一件很困難的事,主要原因是:
    1. 你必須得避開(kāi)反斜杠;
    2. 說(shuō)實(shí)話,正則很難;
  • 快捷鍵:Alt + Enter → check regexp

6. 使用 EnterTab 進(jìn)行代碼補(bǔ)全的差別(Enter vs Tab for Code Completion)

  • 描述:代碼補(bǔ)全時(shí),可以使用Enter或Tab來(lái)進(jìn)行補(bǔ)全操作,但是兩者是有差別的。
    1. 使用Enter時(shí):從光標(biāo)處插入補(bǔ)全的代碼,對(duì)原來(lái)的代碼不做任何操作。
    2. 使用Tab時(shí):從光標(biāo)處插入補(bǔ)全的代碼,并刪除后面的代碼,直到遇到點(diǎn)號(hào)、圓括號(hào)、分號(hào)或空格為止。

7. 提取方法(Extract Method)

  • 描述:提取一段代碼塊,生成一個(gè)新的方法。當(dāng)你發(fā)現(xiàn)某個(gè)方法里面過(guò)于復(fù)雜,需要將某一段代碼提取成單獨(dú)的方法時(shí),該技巧是很有用的。
  • 調(diào)用:Menu → Refactor → Extract → Method
  • 快捷鍵:Cmd + Alt + M(OS X)、Ctrl + Alt + M(Windows/Linux);
  • 更多:在提取代碼的對(duì)話框,你可以更改方法的修飾符和參數(shù)的變量名。

8. 提取參數(shù)(Extract Parameter)

  • 描述:這是一個(gè)提取參數(shù)的快捷操作。當(dāng)你覺(jué)得可以通過(guò)提取參數(shù)來(lái)優(yōu)化某個(gè)方法的時(shí)候,這個(gè)技巧將很有用。該操作會(huì)將當(dāng)前值作為一個(gè)方法的參數(shù),將舊的值放到方法調(diào)用的地方,作為傳進(jìn)來(lái)的參數(shù)。
  • 調(diào)用:Menu → Refactor → Extract → Parameter
  • 快捷鍵:Cmd + Alt + P(OS X)、Ctrl + Alt + P(Windows/Linux);
  • 更多:通過(guò)勾選“delegate”,可以保持舊的方法,重載生成一個(gè)新方法。

9. 提取變量(Extract Variable)

  • 描述:這是一個(gè)提取變量的快捷操作。當(dāng)你在沒(méi)有寫(xiě)變量聲明的直接寫(xiě)下值的時(shí)候,這是一個(gè)很方便生成變量聲明的操作,同時(shí)還會(huì)給出一個(gè)建議的變量命名。
  • 調(diào)用:Menu → Refactor → Extract → Variable
  • 快捷鍵:Cmd + Alt + V(OS X)、Ctrl + Alt + V(Windows/Linux);
  • 更多:當(dāng)你需要改變變量聲明的類型,例如使用 List 替代 ArrayList,可以按下Shift + Tab,就會(huì)顯示所有可用的變量類型。

10. 內(nèi)置(Inline)

  • 描述:當(dāng)你開(kāi)始對(duì)提取操作有點(diǎn)興奮的時(shí)候,突然覺(jué)得東西太多了,怎么辦呢?這是一個(gè)和提取相反的操作。該操作對(duì)方法、字段、參數(shù)和變量均有效。
  • 調(diào)用:Menu → Refactor → Inline
  • 快捷鍵:Cmd + Alt + N(OS X)、Ctrl + Alt + N(Windows/Linux);

11. 合并行和文本(Join Lines and Literals)

  • 描述:這個(gè)操作比起在行末使勁按刪除鍵爽多了!該操作遵守格式化規(guī)則,同時(shí):
    1. 合并兩行注釋,同時(shí)移除多余的//;
    2. 合并多行字符串,移除+和雙引號(hào);
    3. 合并字段的聲明和初始化賦值;
  • 快捷鍵:Ctrl + Shift + J;

12. 動(dòng)態(tài)模板(Live Templates)

  • 描述:動(dòng)態(tài)模板是一種快速插入代碼片段的方法,使用動(dòng)態(tài)模板比較有意思的是你可以使用合適的默認(rèn)值將模板參數(shù)化,當(dāng)你插入代碼片段時(shí),這可以指導(dǎo)你完成參數(shù)。
  • 更多:如果你知道模板的縮寫(xiě),就可以不必使用快捷鍵,只需要鍵入縮寫(xiě)并使用Tab鍵補(bǔ)全即可。
  • 快捷鍵:Cmd + J(OS X)、Ctrl + J(Windows/Linux);

13. 上下移動(dòng)行(Move Lines Up Down)

  • 描述:不需要復(fù)制粘貼就可以上下移動(dòng)行了。
  • 快捷鍵:Alt + Shift + Up/Down;

14. 移動(dòng)方法(Move Methods)

  • 描述:這個(gè)操作和移動(dòng)行操作很類似,不過(guò)該操作是應(yīng)用于整個(gè)方法的,在不需要復(fù)制、粘貼的情況下,就可以將整個(gè)方法塊移動(dòng)到另一個(gè)方法的前面或后面。該操作的實(shí)際叫做“移動(dòng)語(yǔ)句”,這意味著你可以移動(dòng)任何類型的語(yǔ)句,你可以方便地調(diào)整字段或內(nèi)部類的順序。
  • 快捷鍵:Cmd + Alt + Up/Down(OS X)、Ctrl + Shift + Up/Down(Windows/Linux);

15. 取反補(bǔ)全(Negation Completion)

  • 描述:有時(shí)你自動(dòng)補(bǔ)全一個(gè)布爾值,然后回到該值的前面添加一個(gè)感嘆號(hào)來(lái)完成取反操作,現(xiàn)在通過(guò)使用輸入!代替enter完成補(bǔ)全操作,就可以跳過(guò)這些繁瑣的操作了。
  • 快捷鍵:代碼補(bǔ)全的時(shí)候,按下!即可(有時(shí)需要上下鍵選中候選項(xiàng))

16. 后綴補(bǔ)全(Postfix Completion)

  • 描述:你可以認(rèn)為該操作是一種代碼補(bǔ)全,它會(huì)在點(diǎn)號(hào)之前生成代碼,而不是在點(diǎn)號(hào)之后。實(shí)際上你調(diào)用這個(gè)操作和正常的代碼補(bǔ)全操作一樣:在一個(gè)表達(dá)式之后輸入點(diǎn)號(hào)。
    例如對(duì)一個(gè)列表進(jìn)行遍歷,你可以輸入myList.for,然后按下Tab鍵,就會(huì)自動(dòng)生成for循環(huán)代碼。
  • 調(diào)用: 你可以在某個(gè)表達(dá)式后面輸入點(diǎn)號(hào),出現(xiàn)一個(gè)候選列表,在常規(guī)的代碼補(bǔ)全提示就可以看到一系列后綴補(bǔ)全關(guān)鍵字,同樣的,你也可以在Editor → Postfix Completion中看到一系列后綴補(bǔ)全關(guān)鍵字。
  • 常用的有后綴補(bǔ)全關(guān)鍵字有:
    1. .for (補(bǔ)全foreach語(yǔ)句)
    2. .format (使用String.format()包裹一個(gè)字符串)
    3. .cast (使用類型轉(zhuǎn)化包裹一個(gè)表達(dá)式)

17. 包裹代碼(Surround With)

  • 描述: 該操作可以用特定代碼結(jié)構(gòu)包裹住選中的代碼塊,通常是if語(yǔ)句,循環(huán),try/catch語(yǔ)句或者runnable語(yǔ)句。 如果你沒(méi)有選中任何東西,該操作會(huì)包裹當(dāng)前一整行。
  • 快捷鍵:Cmd + Alt + T(OS X)、Ctrl + Alt + T(Windows/Linux)

18. 移除包裹代碼(Unwrap Remove)

  • 描述:該操作會(huì)移除周圍的代碼,它可能是一條if語(yǔ)句,一個(gè)while循環(huán),一個(gè)try/catch語(yǔ)句甚至是一個(gè)runnable語(yǔ)句。該操作恰恰和包裹代碼(Surround With)相反。
  • 快捷鍵:Cmd + Shift + Delete(OS X)、Ctrl + Shift + Delete(Windows/Linux)

19. 手動(dòng)喚出自動(dòng)補(bǔ)全(Class Name Completion)

  • 描述:一般使用 Android Studio 的時(shí)候,自動(dòng)提示會(huì)在你想要提示的時(shí)候自動(dòng)出現(xiàn),比如輸入 Log. ,就出現(xiàn) Log.d()、Log.e、Log.i() 等提示。不過(guò)如果在自動(dòng)提示的時(shí)候手一抖選錯(cuò)的話,比如想選 Log.d() 結(jié)果選了 Log.e() ,你可能會(huì)把 .e() 都刪掉,然后再輸入一個(gè) . , 然后彈出自動(dòng)補(bǔ)全提示。其實(shí)這時(shí)候只需要?jiǎng)h除 e() 然后手動(dòng)喚出自動(dòng)補(bǔ)全即可。
  • 快捷鍵: Ctrl + Alt + Space (OS X/Windows/Linux) (可能存在快捷鍵沖突無(wú)法喚出,修改下快捷鍵即可)

20. Language Injection

大家都知道在 Java 的 String 中編輯有 JSON 的話有多麻煩,各種轉(zhuǎn)義真是讓人瘋狂,在 Intellij IDEA 中,我們可以直接使用 Intellij IDEA 的 Language Injection 的功能(Alt + Enter)將一個(gè)字符串標(biāo)記為 JSON,就可以非常方便地編寫(xiě) JSON 了,再也不用擔(dān)心轉(zhuǎn)義的問(wèn)題了:

調(diào)試技巧

1. 分析傳入數(shù)據(jù)流(Analyze data flow to here)

  • 描述:這個(gè)操作將會(huì)根據(jù)當(dāng)前選中的變量、參數(shù)或者字段,分析出其傳遞到此處的路徑。 當(dāng)你進(jìn)入某段陌生的代碼,試圖明白某個(gè)參數(shù)是怎么傳遞到此處的時(shí)候,這是一個(gè)非常有用的操作。
  • 調(diào)用:Menu → Analyze → Analyze Data Flow to Here
  • 快捷鍵:無(wú),可以在設(shè)置中指定。
  • 相反的操作:分析傳出數(shù)據(jù)流(Analyze data flow from here),這個(gè)將會(huì)分析當(dāng)前選中的變量往下傳遞的路徑,直到結(jié)束。

2. 堆棧追蹤分析(Analyze Stacktrace)

  • 描述: 這個(gè)操作讀取一份堆棧追蹤信息,并且使它像logcat中那樣可以點(diǎn)擊。當(dāng)你從bug報(bào)告中或者終端復(fù)制了一份堆棧追蹤,使用該操作可以很方便地調(diào)試。
  • 調(diào)用:Menu → Analyze → Analyze Stacktrace
  • 快捷鍵:無(wú),可以在設(shè)置中指定。
  • 更多:通過(guò)使用“ProGuard Unscramble Plugin”插件,也可以分析混淆過(guò)的堆棧追蹤。

3. 關(guān)聯(lián)調(diào)試程序(Attach Debugger)

  • 描述:隨時(shí)啟動(dòng)調(diào)試程序,即使你沒(méi)有以調(diào)試模式啟動(dòng)你的應(yīng)用。這是一個(gè)很方便的操作,因?yàn)槟悴槐貫榱苏{(diào)試程序而以調(diào)試模式重新部署你的應(yīng)用。當(dāng)別人正在測(cè)試應(yīng)用,突然遇到一個(gè)bug而將設(shè)備交給你時(shí),你也可以很快地進(jìn)入調(diào)試模式。
  • 調(diào)用:點(diǎn)擊工具欄圖標(biāo)或者M(jìn)enu → Build → Attach to Android Process
  • 快捷鍵:無(wú),可以在設(shè)置中指定,或者點(diǎn)擊工具欄對(duì)應(yīng)的圖標(biāo)。

4. 條件斷點(diǎn)(Conditional Breakpoints)

  • 描述:簡(jiǎn)單說(shuō),就是當(dāng)設(shè)定的條件滿足時(shí),才會(huì)觸發(fā)斷點(diǎn)。你可以基于當(dāng)前范圍輸入一個(gè)java布爾表達(dá)式,并且條件輸入框內(nèi)是支持代碼補(bǔ)全的。
  • 調(diào) 用:右鍵需要填寫(xiě)表達(dá)式的斷點(diǎn),然后輸入布爾表達(dá)式。

5. 禁用斷點(diǎn)(Disable Breakpoints)

  • 描述:這個(gè)操作將使得斷點(diǎn)。當(dāng)你有一個(gè)設(shè)置過(guò)復(fù)雜條件的斷點(diǎn)或者是日志斷點(diǎn),當(dāng)前不需要,但是下次又不用重新創(chuàng)建,該操作是很方便的。
  • 調(diào)用:按住Alt,然后單擊斷點(diǎn)即可。

6. 計(jì)算表達(dá)式(Evaluate Expression)

  • 描述:這個(gè)操作可以用來(lái)查看變量的內(nèi)容并且計(jì)算幾乎任何有效的java表達(dá)式。需要注意的是,如果你修改了變量的狀態(tài),這個(gè)狀態(tài)在你恢復(fù)代碼執(zhí)行后依然會(huì)保留。
  • 快捷鍵:處在斷點(diǎn)狀態(tài)時(shí),光標(biāo)放在變量處,按Alt + F8,即可顯示計(jì)算表達(dá)式對(duì)話框。

7. 審查變量(Inspect Variable)

  • 描述:該操作可以在不打開(kāi)計(jì)算表達(dá)式對(duì)話框就能審查表達(dá)式的值。
  • 快捷鍵:調(diào)試狀態(tài)下,按住Alt鍵,然后單擊表達(dá)式即可。

8. 日志斷點(diǎn)(Logging Breakpoints)

  • 描述:這是一種打印日志而不是暫停的斷點(diǎn),當(dāng)你想打印一些日志信息但是不想添加log代碼后重新部署項(xiàng)目,這是一個(gè)非常有用的操作。
  • 調(diào)用:在斷點(diǎn)上右鍵,取消Suspend的勾選,然后勾選上Log evaluated Expression,并在輸入框中輸入你要打印的日志信息。

9. 標(biāo)記對(duì)象(Mark Object)

  • 描述:當(dāng)你在調(diào)試的時(shí)候,這個(gè)操作可以讓你給某個(gè)特殊的對(duì)象添加一個(gè)標(biāo)簽,方便你后面很快地辨認(rèn)。在調(diào)試時(shí),當(dāng)你從一堆相似的對(duì)象中查看某個(gè)對(duì)象是否和之前是一樣的,這就是一個(gè)非常有用的操作。
  • 調(diào)用:右鍵你需要標(biāo)記的對(duì)象,選中Mark Object,輸入標(biāo)簽;
  • 快捷鍵:選中對(duì)象時(shí),按F3(OS X)、F11(Windows/Linux);

10. 顯示當(dāng)前運(yùn)行點(diǎn)(Show Execution Point)

  • 描述:該操作會(huì)立刻把你的光標(biāo)移回到當(dāng)前debug處。
  • 通常的情況是:
    1. 你在某處觸發(fā)了斷點(diǎn)
    2. 然后在文件中隨意瀏覽
    3. 直接調(diào)用這個(gè)快捷鍵,快速返回之前逐步調(diào)試的地方。
  • 快捷鍵:(Debug時(shí)) Alt + F10;

11. 終止進(jìn)程(Stop Process)

  • 描述:該操作會(huì)終止當(dāng)前正在運(yùn)行的任務(wù)。如果任務(wù)數(shù)量大于一,則顯示一個(gè)列表供你選擇。在終止調(diào)試或者中止編譯的時(shí)候特別有用!
  • 快捷鍵:Cmd + F2(OS X)、Ctrl + F2(Windows、Linux);

12. 臨時(shí)斷點(diǎn)(Temporary Breakpoints)

  • 描述:通過(guò)該操作可以添加一個(gè)斷點(diǎn),這個(gè)斷點(diǎn)會(huì)在第一次被命中的時(shí)候自動(dòng)移除。
  • 快捷鍵:Alt + 鼠標(biāo)左鍵 點(diǎn)擊代碼左側(cè)(鼠標(biāo))、Cmd + Alt + Shift + F8(OS X)、Ctrl + Alt + Shift + F8(Windows/Linux)

13. 調(diào)用層級(jí)樹(shù)彈窗(The Call Hierarchy Popup)

  • 描述:該操作會(huì)給你展示 在一個(gè)方法的聲明和調(diào)用之間所有可能的路徑。
  • 快捷鍵:Ctrl + Alt + H

14. Smart Step Into

在 Debug 的時(shí)候,如果一行代碼中有多行語(yǔ)句,我們又需要進(jìn)入其中的一個(gè)方法調(diào)用的話,經(jīng)常做的方法是點(diǎn)開(kāi)源代碼,然后打上斷點(diǎn),或者直接右鍵 Run to Line,而不能使用快捷鍵快速將 Debug 的當(dāng)前行進(jìn)入到想要去的方法上,Intellij IDEA 提供了 Smart Step Into 的能力,只要使用 Shift + F7,就可以選擇到底要 Debug 進(jìn)入哪一個(gè)方法:

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容