實習(xí)的時候發(fā)現(xiàn)同事對IDEA不是那么順手,于是共享了下自己的settings,順便把之前發(fā)在個人博客上的文章照搬過來了。
注意:使用我的settings后,要重寫maven設(shè)置中的User Setting File、Local Repository以及Java compiler、structure for project保證JVM版本設(shè)置正確
Maven換源:
因為有段時間寫SpringBoot被依賴給坑過,所以把Maven換源寫在最前面。
IDEA是會有默認的Maven工具的, 因此之前如果修改過Maven配置, 還需要在IDEA中指定具體使用的是哪一個MAVEN,使用哪一個配置文件。
▲(Ctrl + Alt + S修改的是當(dāng)前工程), 如果需要對新工程進行修改, 則點擊File->New Projects Settings->Settings for new Projects

其中User settings file選擇之前配置過的Maven_settings就行了,換源在里面修改。注意, mirror標(biāo)簽要放在mirrors標(biāo)簽內(nèi)才能生效, 跟dependencies一樣, 我后來才發(fā)現(xiàn)我竟然沒放進去。
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
補充:
還可以在pom.xml文件中指定改源, 填下下列字段:
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
自動補全提示:
菜單欄Settings(快捷鍵ctrl + alt + s)->Editr->General->Code Completion-> 取消選中"Match case"
IDEA自定義快捷鍵
| 功能 | 英文描述 | 快捷鍵 |
|---|---|---|
| 回退上一次光標(biāo)位置 | back | Ctrl +alt + ← |
| 前進到下一次光標(biāo)位置 | forward | Ctrl +alt + → |
| 選中當(dāng)前部分 | extend selection | Ctrl + D |
| 復(fù)制當(dāng)前行↑ | Duplicate Line or Selection | shift + alt + ↑ |
| 復(fù)制當(dāng)前行↓ | Duplicate Entire Lines | shift + alt + ↓ |
| 切換到上行 | Move Line Up | alt+↑ |
| 切換到下行 | Move Line Down | alt+↓ |
| 下一個方法 | next Method | ctrl + alt+ ↓ |
| 上一個方法 | Previous Method | ctrl + alt+ ↑ |
| 生成getter等方法 | generate | ctrl + L |
| 在下生成空白一行 | Start New Line | Shift + Enter |
| 在上生成空白一行 | Start New Line Before Current | Ctrl+ Shift + Ctrl |
| 完成該行——添加末尾分號+換到下行 | Complete Current Statement | ctrl + shift + enter |
| 剪切改行(可當(dāng)成刪除改行使用) | Cut | ctrl + X |
| 工程中跳轉(zhuǎn)指定class | Navigate-class | Ctrl + M |
| 新建 | Main Menu-File-New | Ctrl + N |
| 關(guān)閉當(dāng)前標(biāo)簽頁 | Editor Tabs - Close | Ctrl + W |
| 切換到下一行 | Split Line | Ctrl + enter |
| 代碼生成 | Code - generate | alt + L |
未改變的快捷鍵設(shè)置
| 功能 | 英文描述 | 快捷鍵 |
|---|---|---|
| 格式化代碼 | Reformat Code | ctrl + alt + L |
| 根據(jù)上下文完成動作(導(dǎo)包) | Show Context Actions | Alt + enter |
| 優(yōu)化import導(dǎo)入 | Optimize lmports | Shift + Ctrl + O |
| 插入生成模板(psvm) | Insert Live Template | Ctrl + J |
| 打開設(shè)置面板 | open settings | Ctrl + alt + s |
| 統(tǒng)一修改變量名 | Main Menu - Refactor- Rename | Shift + F6 |
| 搜索指定Class | Main Menu-Navigate-class | Ctrl + M |
| 重寫方法 | override Methods | Ctrl + o |
| 查看類繼承關(guān)系 | ctrl+H | |
| 查看類繼承關(guān)系圖 | ctrl+alt+shift+U |
▲、以上以windows設(shè)置為模板修改
由于File->Manage IDE Settings->Export settings的內(nèi)容是不包含keyMap的,因此可以直接保存keyMap文件來備份,路徑為C:\Users\mrli\AppData\Roaming\JetBrains\IntelliJIdea2020.3\jba_config\win.keymaps
生成類注釋、文件注釋
沒弄圖, 主要是按照idea生成類注釋和方法注釋的正確方法配置的
生成類注釋
打開Preferences
Editor -> File and Code Templates -> Files -> Class
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
/**
* @program: ${PROJECT_NAME}
* @description: ${description}
* @author: MrLi
* @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
**/
public class ${NAME} {
}
生成方法注釋
打開Preferences
Editor -> Live Templates -> 點擊右邊加號為自己添加一個Templates Group -> 然后選中自己的Group->再次點擊加號添加Live Templates
記得要把最下面的提示▲.No applicable contexts yet.Define->設(shè)置為java
然后在Edit variables里面添加參數(shù)和返回值的自動取值
按上述步驟設(shè)置完后就可以使用了: 在方法上面直接輸入/ + 你設(shè)置的Abbreviation快捷鍵 + tab鍵就直接生成了 (我設(shè)置的是Abbreviation是q,那么通過/ + q + tab就可以調(diào)用導(dǎo)出了)
神秘密碼(Template text中填的):
$params$和$returns$在Edit variables中分別選擇methodParameters(), methodReturnType()
**
* @Description: $description$
* @Param: $params$
* @Return: $returns$
* @Author: MrLi
* @Date: $date$
*/
不錯的配置:
**
* @author: Mrli
* @description:
* @date: $date$ $time$$param$ $return$
*/
需要注意的是,date 和 time 的 Expression 使用的是 IDEA 內(nèi)置的函數(shù),直接使用下拉框選擇就可以了,而 param 這個參數(shù) IDEA 默認的實現(xiàn)很差,因此我們需要手動實現(xiàn),代碼如下:
groovyScript("def result = '';def params = \"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] != '')result+='* @param: ' + params[i] + ((i < params.size() - 1) ? '\\r\\n ' : '')}; return result == '' ? null : '\\r\\n ' + result", methodParameters())
另外 return 這個參數(shù)需要修改,代碼如下:
groovyScript("return \"${_1}\" == 'void' ? null : '\\r\\n * @return: ' + \"${_1}\"", methodReturnType())
刪除沒有用到的包
1.手動快捷鍵
Ctrl + Alt + O1
2.配置自動清理
Ctrl + Alt + S 打開設(shè)置->editor->auto import
Optimize imports on the fly:自動去掉一些沒有用到的包
Add unambiguous imports on the fly: 自動幫我們優(yōu)化導(dǎo)入的包
Intellij idea 報錯:Error : java 不支持發(fā)行版本5
在Intellij中點擊“File” -->“Project Structure”,看一下“Project”和“Module”欄目中Java版本是否與本地一致:
解決方案: https://blog.csdn.net/qq_22076345/article/details/82392236
Intellij IDEA 神器居然還有這些小技巧[轉(zhuǎn)]
Java開發(fā)好用的插件
Codeglance: 代碼概覽
translation: 翻譯插件
grey console: 控制臺美化
restfultoolkit: 接口工具箱
gsonformater: json格式化工具
mybatis log plugin: sql日志插件
free mybatis plugin
Alibaba Java Coding Guidelines:阿里編程規(guī)范
codata: 人工智能代碼補全
easycode 自動生成mybatis mapper相關(guān)
lombok: setter/getter生成
SequenceDiagram: 時序圖分析
Maven Helper: maven依賴分析工具
Maven search: 依賴dependency查找工具
CamelCase: 單詞格式轉(zhuǎn)換
約定配置
設(shè)置編碼規(guī)定

設(shè)置編譯Java版本為8

開啟注解編譯

(可選)將iml,.idea文件不顯示在工程中

更多快捷鍵
左側(cè)的菜單欄上有除了我們常用的
Project、Structure以外還有Bookmarks和Learn, 于是在好奇之下,就點擊學(xué)習(xí)了Learn中的內(nèi)容,其主要是關(guān)于Idea功能以及快捷鍵介紹的,對此記錄一下。
Ctrl + Alt + V: 提取變量, replace all occurences, 將對應(yīng)表達式全部抽取替換為一個變量, 比如我們很多地方用到了arr[i+1], 結(jié)果為了易讀性想把他直接寫成這個變量就可以直接使用這個功能Ctrl +Shift + Alt +N: 搜索函數(shù)名(Symbols)Shift + F6: 對某個字段全部重命名刪除沒用的字段, Alt + Enter 打開上下文后選擇
Safe DeleteCtrl + Alt + T: 添加環(huán)繞代碼;Ctrl + Shift + delete刪除環(huán)繞代碼Ctrl + -:折疊代碼;Ctrl + +: 展開代碼Ctrl + Alt + Shift + T: 重構(gòu), 如introduce Parameter將選取的對象抽取為方法參數(shù);inlince Vairable取消行內(nèi)變量在
if(?)的括號中,選擇某個選項(選項變藍即為選中,aa.contains()),輸入Shift+1即!,則直接會生成對應(yīng)的!aa.contains()==>if (!aa.contains())
Java短代碼(快捷代碼)
https://www.cnblogs.com/asio/p/12582328.html
psvm 或者 main:main()方法-
sout:輸出語句變量.sout ==> System.out.println(變量); soutv ==> System.out.println("變量名 = " + 第一個成員變量變量(沒有的找方法參數(shù),再沒有找方法局部變量,再沒有輸出"true" + true)); 指定變量.soutv ==> System.out.println("變量名 = " + 指定變量); soutm ==> System.out.println("當(dāng)前類名.當(dāng)前方法"); soutp ==> soutp=System.out.println("方法形參名 = " + 形參名); //如果方法參數(shù)列表為空,則效果相當(dāng)于sout
-
fori:for循環(huán)語句類似的有 // length.fori int length = 10; for (int i = 0; i < length; i++) { } // length.forr for (int i = length; i > 0; i--) { } // array.fori int array[] = new int[10]; for (int i = 0; i < arr.length; i++) { } // array.for int array[] = new int[10]; for (int i : arr) { } // list.for:集合list的for循環(huán)語句 list.fori List<String> list = new ArrayList<String>(); for (int i = 0; i < list.size(); i++) { } list.forr //從尾到頭遍歷
-
iter:可生成增強 for 循環(huán)
iter:可生成增強 for 循環(huán) for (Object o : ) { } array.iter int array[] = new int[10]; for (int i : arr) { } itar:可生成普通 for 循環(huán) for (int i = 0; i < array.length; i++) { = array[i]; } ifn:可生成if(xxx = null),xxx為定義過的變量prsf:可生成private static finalmn: ==>
$VAR$ = Math.min($VAR$, $END$);生成取最值, 同樣的有mx,取最大值geti==>生成getIntance方法
WL寫鎖、RL讀鎖,注操作對象為
new ReentrantReadWriteLock()lst: 獲得array最后一個元素
lazy:懶加載