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