【方向盤】使用IDEA的60+個快捷鍵分享給你,權為了提效(代碼補全篇)
前言
本系列上篇文章介紹了IDEA里關于Run運行、Debug調試相關的快捷鍵,熟練后使用起來逼格更高了有木有。
如你所知,IDEA非常的“智能”,能給與你代碼提示、問題智能修復等幫助。本文將繼續介紹IDEA在代碼補全方面的快捷鍵,加快你的編碼過程。
所屬專欄
- 【方向盤】-IntelliJ IDEA。
相關下載
- 【本專欄源代碼】:https://github.com/yourbatman/FXP-java-ee。
- 【技術專欄源代碼大本營】:https://github.com/yourbatman/tech-column-learning。
- 【女媧Knife-Initializr工程】訪問地址:http://152.136.106.14:8761。
- 【程序員專用網盤】公益上線啦,注冊送1G超小容量,幫你實踐做減法:https://wangpan.yourbatman.cn。
- 【Java開發軟件包(Mac)】:https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit。
版本約定
- Mac OS 12.3。
- iTerm2 3.4.15(zsh 5.8)。
- IntelliJ IDEA 2021.3.3。
正文
IntelliJ IDEA快捷鍵
Code Completion
涵蓋了各種上下文感知的代碼完成技術,使你能夠加快你的編碼過程。
Basic
自動代碼補全。比如i.toS敲打后:
按下control +
space快捷鍵,將自動補全i.toString(),這就是代碼自動補全功能。
值得注意的是,若此時IDEA有多個補全選項,也就是說無法幫你決策如何補全代碼,這時就會列出所有可能選項,交由你來做選擇決策,正如下圖所示:
這不就是津津樂道的代碼提示、代碼補全功能嗎。快捷鍵就是control + space。
Tips:control + space快捷鍵在某些場景按兩次,有時候你能得到驚喜哦。
Show Quick Fixes
也叫它萬能鍵:在提示報錯的地方按下此快捷鍵,IDEA根據上下文總能給你一些修復提示,達到快速修復問題的目的。
這個快捷鍵的使用頻率也賊高,基本原則是:哪里報錯點哪里。
Complete Current
完成當前語句。形容很抽象,功能很強大:當前還未完成的語句,此快捷鍵可快速幫你完成。那么,(Java中)什么是Statement:表示某種操作, 但是沒有返回值。
- Integer i = 100
- if語句
- break語句
- ...
此時按下此功能快捷鍵,將快速補全if語句:
老實說,筆者使用該快捷鍵頻率很高,但絕大多數情況下只用于補全語句末尾的;。若讓自動補全if、while等這種邏輯語句的時候,有時候會出現邏輯問題,所以你使用的時候也要小心。
Delete Line
delete按鍵是一個個刪除(或者刪除選中的區域),而很多時候我們需要按行刪除,這時該快捷鍵就非常好用了,它可以按行刪除:
- 沒有任何選中時,刪除光標所在行。
- 有選中區域時,刪除選中區域所有行。
如圖所示,按下此快捷鍵時18-23共6行將全部被刪除。
Duplicate Line or Selection
請注意該功能命名和上面的差異:Line or Selection可知它即可復制一行,又可復制選中部分,是或者的關系。對比,上面有且僅針對行Line進行操作,這是不一樣的,具體表現在:
- 沒有任何選中時,按行復制,復制光標所在行到下一行。
- 當有選中時,這時就按內容復制了,和行沒有關系:選中多少復制多少,然后將復制的內容放到選中區域尾部。
按兩次command + d的效果為:
最后再強調一下,可認為該快捷鍵具有兩個功能:復制1行,或者復制選中內容到選中區域末尾。后者的典型使用場景是:橫向內容快速拷貝。
Duplicate Entire Lines
這個快捷鍵我賊喜歡,相較于command + d我更喜歡這個。它的含義是:復制全部行。若沒有任何選中or只選中一行,效果同command + d;若有Selection,那么它復制的是選中區域的所有行,語義更加清晰,使用更加便捷。
按兩次control + command + ↓的效果為:
這種效果用起來更方便有木有,有木有?使用此快捷鍵再結合下面介紹的移動快捷鍵,將可以發出更大威力,可謂加強版CV。
Tips:IDEA默認并沒有給該功能綁定快捷鍵,筆者覺得這個比command + d更好用而自定義的(和其它鍵無沖突)快捷鍵,各位酌情取之哈。
Move Statement Up/Down
將Statement作為一個整體進行移動,重點是整體移動,所以不會存在缺胳膊少腿不完整現象,它更像自動擋,由IDEA幫你決策移動哪些行、以及智能放到合適的位置。
如圖例子,若要向上移動System.out.println(v)這個Statement的話,“合適的位置”在圖中已標出,只有三處。
Tips:只能向上移動3次,因為Statement不可能出現在stream之間,也不能出main方法嘛。這便就是自動擋的“好處”。
Move Line Up/Down
該移動方式就是手動擋嘍:
- 具體移動哪些行自己定(單位:行)。
- 具體移動到哪里自己定(一行一行的移動)。
如圖例子,移到哪里去完全自由,且沒有邊界。實話講,筆者個人還蠻喜歡使用這種移動方式的,更為常用。
Reformat Code
格式化代碼,IDEA(根據格式化模板)幫你整理空格、換行等格式,讓代碼看起來更整潔,建議經常使用。
Tips:默認會格式化當前文件的所有內容。若只想局部格式化,那就選擇區域后格式化,只會作用于選擇的那部分代碼
另外,在IDEA 2021.0.1版本新增了特性,有個新工具Actions on Save:可勾選Reformat code選項,這樣在保存的時候就自動格式化啦。
Reformat File
它的目標也是格式化,當按下此快捷鍵時會彈出對話框:
解釋這些選項:
Scope:格式化范圍:
- Only changes uncommitted to VCS:只格式化為提交的文本。
- Selected text:只格式化選中區域的文本。
- Whole file:整個文件。
Options:格式化選項:
- Optimize imports:優化導包(刪除無用的導包)。常用
- Rearrange code:重新排列代碼。根據code style代碼樣式對代碼重新排列。不常用
- Code cleanup:代碼清理。刪除掉未被使用的變量、方法等。不常用
- Do not keep line breaks:不保留換行,也就是仍按照code style方式去格式化。不常用
言而總之,它是option + command + l的加強版:可對格式化定制化。但老實講,實際使用大都還是直接使用上面的option + command + l完成格式化,方便快捷。
Optimize imports
一鍵整理導入語句,刪除沒有使用過的導入,非常使用。
不過實話講,這個快捷鍵筆者很少使用,原因是我會開啟IDEA的自動處理設置,所以就不用我再手動處理啦。如下圖所示(也建議你這么干):
Override/Implements Methods
這兩個快捷鍵放在一起,因為它倆功能很“相似”:都是復寫/實現方法。舉個例子:
public class Demo implements InitializingBean {
}
該類實現了InitializingBean接口但沒復寫其方法,編譯肯定報錯的。這時我們可以借助IDEA快捷鍵幫我們快速生成相關代碼,有多種快捷鍵方式:
control + i:它的語義是實現。在類內部任意位置按下此快捷鍵,會彈出還未實現的接口方法,如下圖所示:
值得注意的是,這里只會列出還未實現的接口方法,若已沒有符合條件的方法(比如你都已經實現了,或者真的沒有接口方法待實現了)就會彈出如下提示:
control + o:它的語義是復寫。在類內部任意位置按下此快捷鍵,會彈出父類可以復寫的所有方法,另外它還會附帶把還未實現的接口方法帶出來,也能達到實現接口方法的目的。如下圖所示:
從這個case相信你能感受到control + o和control + i的區別了吧。
然而,你是否還聯想到咱前面講過一個個“萬能修復”快捷鍵呢?是的,就是option + 回車快捷鍵。按下此鍵,得到如下窗口:
這
時點擊Implement methods這項,將會生成實現接口所有的還未實現的方法,注意是所有哦。
這三組快捷鍵看似都可以完成接口方法的實現問題,但各有各自最適合的場景,使用時因地制宜。筆者這三個快捷鍵使用得都挺多的。除此之外,針對復寫/實現這種場景,筆者還有一個常用的“小技巧”,手動書寫出需要復寫/實現的方法名然后調出提示:
這就相當于半自動擋嘍,使用的前提是你需要知道你想復寫的方法的大致名稱,這樣IDEA才能提示你。我喜歡使用該方式的主要原因:焦點可快速定位到我想要的地方,方法的位置自己也可控。
Generate
自動生成構造器、get/set方法、toString()方法、測試用例等等,非常好用的一個快捷鍵。
在lombok越來越流行的今天,這個快捷鍵筆者其實已經很少使用了。
Line/Block Comment
快速生成代碼行注釋/塊注釋,這個太簡單也太常,就不贅述了。
總結
本文繼續介紹了IDEA 代碼補全相關的快捷鍵,感受到IDEA在上下文感知的代碼完成技術上的強大,希望在編碼的過程中,能加快你的進程,提升你的出活效率。