作者:Sam哥哥聊技術(shù)
原文鏈接:https://blog.csdn.net/linsongbin1/article/details/80560332
概述
在2018年5月6日寫了一篇介紹IntellIJ IDEA的文章,Intellij IDEA神器居然還有這些小技巧,主要是列出一些平時(shí)大家可能沒用過或者沒怎么用,但是又非常好用的IntellIJ IDEA小技巧。由于篇幅原因,只是列出了一小部分,那么接下來的這篇文章,會(huì)繼續(xù)補(bǔ)充一些IntellIJ IDEA的小技巧。
別輕易自定義快捷鍵
有蠻多操作,IntellIJ IDEA并沒有給我們設(shè)置默認(rèn)快捷鍵,需要使用者自己去定義快捷鍵。比如說:
- Rebuild Project
- Compare With Branch
為了能在IntellIJ IDEA里進(jìn)行無鼠標(biāo)編程,很多程序員都會(huì)自定義快捷鍵,但是有三個(gè)地方你可能需要注意一下。
- 經(jīng)常會(huì)出現(xiàn)快捷鍵與其他應(yīng)用的快捷鍵沖突的情況;
- 自定義太多快捷鍵了,你也不太好記?。?/li>
- 使用其他同事的IDEA時(shí)(比如說幫忙定位問題),你自定義的快捷鍵沒法用。
其實(shí)在IntellIJ IDEA里的每個(gè)操作,都可以看出一個(gè)action。我們可以使用ctrl+shift+a來輸入我們要使用的操作。比如說,上面提到的Rebuild Project。你可以先使用ctrl+shift+a快捷鍵,然后輸入Rebuild Project并回車,即可執(zhí)行你要的操作。

對我自己來說,除了基礎(chǔ)的快捷鍵,ctrl+shift+a是我用最頻繁的快捷鍵了。
使用ctrl+alt+h要小心
ctrl+alt+h非常好用,但是有個(gè)坑,當(dāng)同一個(gè)方法里,調(diào)用某個(gè)方法多次的時(shí)候,比如說下面的代碼:
public class TestService {
public void test1() {
System.out.println("aa");
}
public void test2() {
test1();
}
public void test3() {
test1();
//無數(shù)業(yè)務(wù)操作后,再次電影test1()方法
test1();
}
}
如果我們想知道有哪些地方調(diào)用了test1()方法,使用ctrl+alt+h無法正確列出來的。因?yàn)?code>ctrl+alt+h只能告訴你調(diào)用的層次。

ctrl+alt+h只是會(huì)在某個(gè)隱蔽的地方,告訴你,test3()方法調(diào)用了test1()方法兩次。這樣就很容易坑到開發(fā)者,因?yàn)榇蟛糠秩丝赡懿惶⒁夂竺娴恼{(diào)用次數(shù),導(dǎo)致改bug的時(shí)候,以為全部都改了呢?
如果你想精確的列出到底哪些地方調(diào)用了test1()方法,你需要使用alt+f7這個(gè)快捷鍵。

尤其是我們在閱讀極其復(fù)雜的業(yè)務(wù)代碼時(shí),使用alt+f7就非常合適。
當(dāng)然alt+f7也可以作用在變量上,列出某個(gè)類里,哪些地方使用了該變量。
ctrl+alt+h被問的最多的兩個(gè)問題
經(jīng)常有同事和網(wǎng)友問我。
Sam哥,使用ctrl+alt+h怎么跳轉(zhuǎn)到源代碼,又如何重新回到ctrl+alt+h對應(yīng)的視圖里面。
調(diào)轉(zhuǎn)到源代碼

其實(shí)很簡單,當(dāng)你使用ctrl+alt+h后,使用向下或者向上箭頭,選擇某個(gè)調(diào)用,然后按下f4即可跳轉(zhuǎn)到源代碼。
如何回到ctrl+alt+h視圖
這個(gè)真心被問了好幾百遍,其實(shí)很簡單,當(dāng)你使用f4跳轉(zhuǎn)到源代碼后,直接使用alt+8就可以跳回去了。就又可以繼續(xù)看下一個(gè)調(diào)用的地方了。
快速找到Controller方法
如果你的項(xiàng)目里有非常多的controller,里面有非常多的http或者resful方法。如何快速找到這些方法呢?這個(gè)時(shí)候,ctrl+alt+shift+n就可以派上用場了。
比如說,你依稀記得入賬單相關(guān)的接口,都有個(gè)bill的url路徑,那么使用ctrl+alt+shift+n后,直接輸入/bill即可。

當(dāng)你在成千上萬的Controller里尋找方法時(shí),這一招就可以大大提高效率。
了解項(xiàng)目關(guān)鍵業(yè)務(wù)流程方法的利器-bookmark
在一些創(chuàng)業(yè)公司里,很多核心的模塊都是放置在同一個(gè)項(xiàng)目里的。比如說,訂單相關(guān)的接口,支付相關(guān)的接口,商品相關(guān)的接口。這個(gè)時(shí)候,你可以將這些關(guān)鍵業(yè)務(wù)方法,使用bookmark統(tǒng)一放置到某個(gè)地方,方便你閱讀。

那么如何使用快捷鍵來達(dá)到上面的效果呢?
public class TestService {
public void test1() {
System.out.println("aa");
}
public void test2() {
test1();
}
public void test3() {
test1();
test1();
}
}
比如像上面的方法,我想將test1()方法放置到bookmark里,可以通過如下操作來完成:
1、使用ctrl+f12,列出該類的所有方法,然后輸入test1,將光標(biāo)定位在test1上;
2、按下f11,將test1()加入到bookmark;
3、按下shift+f11,將bookmark列表彈出來;
4、按下ctrl+enter修改bookmark名字。
只留下一個(gè)tab
這個(gè)是我目前正在用的,就是整個(gè)工程里面,只有一個(gè)代碼tab。也即是說,無論你打開多少個(gè)文件,都是在同一個(gè)tab里面顯示。如果這樣設(shè)置了,有些網(wǎng)友可能會(huì)問,我想看看我最近操作哪些類了,怎么看? 可以直接使用ctrl+e來顯示最近操作的文件。
我是比較推薦只是保留一個(gè)代碼tab的,非常簡潔。如果每打開一個(gè)文件,就是一個(gè)新的tab,很快你就會(huì)亂掉,而且還得關(guān)閉部分tab。
可以通過下面的方式來設(shè)置成用一個(gè)tab顯示代碼。按下ctrl+shif+a,然后輸入Editor Tabs,然后回車進(jìn)入編輯頁面。

然后在Placement那里,選擇None

如何閱讀又長又臭的代碼
由于歷史原因,項(xiàng)目里總會(huì)存在那種無法理解的,又長又臭的業(yè)務(wù)代碼。閱讀這種代碼,簡直就是一種煎熬。但是在IntellIJ IDEA里,只要使用5個(gè)小技巧,便可大大提高閱讀質(zhì)量和速度。
創(chuàng)建任意代碼折疊塊

像上面的for循環(huán),我想直接將其折疊起來,因?yàn)榇a太長的時(shí)候,使用折疊塊,可以幫助你快速理清代碼的主脈絡(luò)。
可以將光標(biāo)定位在for循環(huán)的左大括號里,然后使用ctrl+shift+. 即可。

如果你想讓這個(gè)折疊快消失,直接使用ctrl 加上一個(gè)+即可。
大括號匹配
這個(gè)也非常有用,因?yàn)榇a太長,某個(gè)for循環(huán),可能已經(jīng)撐滿整個(gè)屏幕了。這個(gè)時(shí)候,找到某個(gè)大括號對應(yīng)的另外一邊就很費(fèi)勁。你可以將光標(biāo)定位在某個(gè)大括號一邊,然后使用ctrl+]或者ctrl+[來回定位即可。
ctrl+shift+f7結(jié)合f3
ctrl+shift+f7可以高亮某個(gè)變量,而且隨著鼠標(biāo)的移動(dòng),這個(gè)高亮是不會(huì)消失的(這個(gè)很重要)。然后使用f3找到下一個(gè)使用該變量的地方。
使用ctrl+shift+i
這個(gè)也是閱讀長段代碼的法寶,當(dāng)你閱讀的代碼很長的時(shí)候,突然想看代碼里某個(gè)類的定義,那么直接使用ctrl+shift+i,就可以在當(dāng)前類里再彈出一個(gè)窗口出來。比如說:

在這個(gè)代碼塊里,你想看看TestTemp類的定義,那么將光標(biāo)定位在TestTemp上,然后直接使用ctrl+shift+i,就會(huì)彈出如下的窗口。

按下esc,可以關(guān)閉這個(gè)窗口。
使用alt+f7
這個(gè)我在上面已經(jīng)介紹過了??梢粤谐鲎兞吭谀男┑胤奖皇褂昧恕?/p>
結(jié)合這5個(gè)技巧,相信可以大大提高長段代碼的閱讀效率。
跳到父類接口
我們經(jīng)常會(huì)定義一個(gè)service 接口,比如說UserService,然后使用一個(gè)UserServiceImpl類去實(shí)現(xiàn)UserService里面的接口。
public interface UserService {
void test1();
}
public class UserServiceImpl implements UserService {
@Override
public void test1() {
}
}
那么在UserServiceImpl里的test1()方法上,如何跳轉(zhuǎn)到UserService的test1(),直接使用ctrl+u即可。
后悔藥
如果修改了部分代碼,突然覺得不合適,使用ctrl+z回滾掉后。突然又覺得剛才的修改是可以的。那你可以使用ctr+shift+z再次恢復(fù)你剛才修改的內(nèi)容。
切換皮膚最快的方式
可以直接使用ctrl,然后加上一個(gè)`,就可以立刻彈出如下界面:

選擇Color Scheme,然后回車,就可以彈出修改皮膚的窗口。
