工欲善其事,必先利其器。IDEA為我們提供了豐富的功能,但不代表你就用的趁手。我們應當根據自己的條件、需求合理的配置,從而駕馭好這匹悍馬。讓它成為我們編程的利器。下面就一些常用的配置做個說明。
-
- 2.1 使用Eclipse的按鍵設置
- 2.2 使用子句安裝的Maven,配置指定的本地倉庫
- 2.3 使用Eclipse編譯器替代javac
- 2.4 關閉validation
- 2.5 關聯SCM client
- 2.6 插件管理
- 2.7 設置Plugin更新的Proxy
- 2.8 Plugin本地方式安裝
- 2.9 集成diff, merge等比較工具
- 2.10 提高效率的快捷鍵
- 2.11 護眼設置
- 2.12 在Project中隱藏IDEA、Eclipse的配置文件
- 2.13 設置Java文件的copyright
- 2.14 使用File Template來減少一些必要的工作
- 2.15 使用Live Template自定義代碼模板
- 2.16 關閉不必要的代碼審查
- 2.17 文件編碼、換行符設置
- 2.18 Tab鍵用4個空格替代
- 2.19 打開Class、Package的模糊導入
- 2.20 切換扁平風格與層疊風格的導航
- 2.21 關閉包瀏覽器中的show Members
- 2.22 編輯多個文件時展示風格
- 2.23 設置Project | Module 源碼JDK版本、構建JDK版本
- 2.24 自動插入serialVersionUID
- 2.25 Properties 文件顯示中文
- 2.26 Properties 文件內的中文設置默認大小寫
IDEA運行環境設置
1.1 設置IDEA使用的JDK
在使用IDEA 2017時,要求JDK版本在Java8上。所以要配置環境變量JAVA_HOME為JDK8的。但是在大家的項目中,通常可能並不是JDK8。為了能夠區別開來,各用各的JDK。可以在機器上安裝多個JDK版本。然后在環境變量中配置各自的環境變量即可。
在Windows上,IDEA查找環境變量的順序:
32位的搜索順序:
1)IDEA_JDK / PHPSTORM_JDK / WEBIDE_JDK / PYCHARM_JDK / RUBYMINE_JDK / CLION_JDK / DATAGRIP_JDK 。其中WEBIDE_JDK應用於 WebStorm、PhpStore 的2016.1之前版本。
2)${idea.config.path}\<product>.jdk文件
3)JDK_HOME環境變量
4)JAVA_HOME 環境變量
64位的搜索順序:
1)IDEA_JDK_64 / PHPSTORM_JDK_64 / WEBIDE_JDK_64 / PYCHARM_JDK_64 / RUBYMINE_JDK_64 / CLION_JDK_64 / DATAGRIP_JDK_64 。其中WEBIDE_JDK應用於 WebStorm、PhpStore 的2016.1之前版本。
2)\${idea.config.path}\<product>64.jdk文件
3)JDK_HOME環境變量
4)JAVA_HOME 環境變量
至於Linux、Mac上的,可以參考:
1.2 JVM options設置
IDEA是Java程序,heap內存的大小對Java運行快慢很重要,要根據機器的情況適當的調整。
配置文件在${IDEA_HOME}/bin目錄下的idea.exe.vmoptions (For 32位程序),idea64.exe.vmoptions(For 64位程序)。
我的機器(虛擬機)內存是2.7G,做如此配置,可以不卡。如果機器內存足夠大,可以調整-Xmx2G,不要吝嗇。
1.3 IDEA System,Config文件位置調整
默認情況下,IDEA的運行時必要的數據文件(配置、index等)會放在系統的當前用戶的home目錄下(windows系統下是: c:\Documents and Settings\\${User}\.IntelliJIdea2017.3)。
項目中的文件通常會比較多,IDEA會為每個文件建立索引的,所以會占用不少的磁盤空間。我們可以將其轉移到其它磁盤。
當你有一個SSD時,你為了讓你的IDEA運行的更快,可以將這些文件放到SSD上。
怎么調整文件位置呢?
在${IDEA_HOME}/bin目錄下有一個idea.properties文件,假設你要將目錄 調整到D:/idea_data目錄下,應該做如下調整:
1) 關閉IDEA
2) 去掉idea.config.path、idea.system.path前的注釋。
3)將idea.config.path的值調整為d:/idea_data/config,將idea.system.path調整為d:/idea_data/system
4)從c:\Documents and Settings\${User}\.IntelliJIdea2017.3目錄下,將.IntelliJIdea2017.3目錄下的內容全部拷貝到d:/idea_data目錄下。
5)重啟idea,在C盤並不會重新生成索引文件(這說明你的配置生效了)。
我的調整如下:
定義了一個新的配置項:myidea.data.dir,然后讓idea.config.path,idea.system.path都使用它。
如果調整不生效,可以參考:
IDEA Settings
在工具欄或者File>Settings都可以打開idea軟件設置。下面要調整在設置在Settings中進行。
2.1 使用Eclipse的按鍵設置
如果是從Eclipse轉向IDEA的,對Eclipse按鍵已經熟知了,不想再花時間去研究IDEA的按鍵設置時,可以配置此項。
Settings 》Keymap,調整為Eclipse即可。
2.2 使用自己安裝的Maven,使用指定的本地倉庫
Eclipse可以指定自己安裝的Maven,IDEA自然也是可以的了。調整方案與Eclipse上類似。具體如下:
Settings 》Build,Exection,Deployment 》BuildTools 》Maven
1) 設置maven home directory,
2) 設置User settings file
3) 修改local倉庫。
修改完畢后,確認一下Path Variables中的MAVEN_REPOSITOR的值是否正確。具體方法:切到Settings > Appearance & Behavior > Path Variables區域后自然可見。
如果使用Gradle作為構建工具,調整方案類似。
2.3 使用Eclipse編譯器替代javac
使用Eclipse編譯器有如下好處:
1、即便代碼有錯,也是可以編譯調試的。如果用過Eclipse,會有"process error,仍然要執行嗎?"的提示框,就是這個原因。
2、可以增量編譯,即只編譯有改動的java文件。
3、利用多核cpu並行編譯。
這些好處是javac不具備的,自然要選擇它了。
調整方法:
Settings 》Build,Execution,Deployment 》Complier 》 Java Compiler
修改 Use compiler 為 Eclipse。
如果內存足夠的話,可以同時開啟Compile independent modules in parallel
2.4 關閉Validation
使用Eclipse時,我們通常會將validation關閉,目的是加快構建速度。特別是要關閉JavaScript的驗證。使用IDEA了,同樣要關閉校驗了。設置方案:
Settings 》Build,Execution,Deployment 》 Validation ,將Validate on build的勾去掉。
2.5 關聯SCM client
IDEA 可以支持各種各樣的SCM工具(也稱為VCS工具),例如:CVS, Git, Subversion, Mercurial, Perforce, TFS (微軟的一款產品)。但IDEA本身不含有這些SCM工具的客戶端,這就需要我們接入相應的客戶端之后才可使用。
集成SVN
下面以SVN為例,svn的客戶端程序就是svn.exe,我們只需要想辦法讓IDEA找到它即可。
一般有兩種方式:
1) 將svn.exe加入到系統的環境變量中,在IDEA Settings 》Version Control 》Subversion中將use command line client 打勾,並設置client為svn。
2)在IDEA Settings 》Version Control 》Subversion中將use command line client 打勾,並設置client為svn.exe在路徑。
在我的機器上,之前安裝有TortoiseSVN,它里面也是有svn命令行工具的,名字就叫svn.exe。所以我的配置就是:C:\Program Files\TortoiseSVN\bin\svn.exe
如果你本地安裝的SVN客戶端是其它的,只要找到它的命令行可執行程序,按照上面方法接入即可。
如果你本地安裝的也是TortoiseSVN,但在TortoiseSVN的bin目錄下,沒有找到svn.exe,那說明你是沒有安裝svn的命令行的,就需要啟動TortoiseSVN的安裝程序,選擇command line模塊安裝即可。
集成Git
集成Git,同樣也有兩種方式:
1)將git.exe加入到系統的環境變量中,在IDEA Settings 》Version Control 》Subversion中設置client為git。
2)在IDEA Settings 》Version Control 》Git中設置client為git.exe在路徑。
例如我將Path to Git executable設置為:D:\Program Files\Git\cmd\git.exe
2.6 插件管理
IDEA和Eclipse能夠得到廣泛的應用的原因之一,就是有良好的插件機制。可以集成各種插件,當然了也有很多是我們可能根本不需要的插件,可以移除之。
Settings 》 Plugins,在這里可以進行插件安裝、卸載、啟用、禁用操作。
安裝插件可以采用在線安裝、本地安裝兩種方式。本地安裝方式參見2.8小節。
如果在下載插件過程中,發現很慢,可以設置Http Proxy的.參考2.7小節.
2.7 設置Plugin更新的Proxy
在下載國外的資源時,為了加快下載速度,通常會從兩個方向入手。1)從國內的mirror下載。2)使用Proxy來下載。IDEA在插件安裝時,是可以自定義HTTP Proxy的。在Settings 》Plugins 》install JetBrins plugin下有個Http Proxy Settings。
大家常用的HTTP Proxy就要數影梭(ShadowSocks)了。使用ShadowSocks也可以上google的,還是推薦大家用一下的。
2.8 插件本地方式安裝
在線安裝方式不用多說,選擇要安裝的插件自行安裝即可。如果你的機器不能聯網,譬如說在公司的內網情況下,想要安裝期望的插件時,就需要先下載好插件,然后選擇本地方式進行安裝。
在講本地安裝方式前,先說一下IDEA安裝插件的流程,以及相關目錄。
${IDEA_HOME}/plugins 這個目錄是IDEA內置插件(安裝好IDEA時已安裝的插件)的目錄。
${IDEA_CONFIG_PATH}/plugins 這個目錄是你自己安裝的插件的目錄(不論在線安裝,還是本地安裝)。
${IDEA_SYSTEM_PATH}/plugins 這個目錄是你將要安裝的插件的目錄。
你在線安裝的插件,下載完成后,就在這個目錄下,此時並沒有安裝。而是把要安裝這個插件的這個動作寫在一個action.script里(這是個二進制文件,不能直接看到內容的,也不需要看到)。在重啟IDEA時會根據這個action.script里的配置(配置了要安裝的插件ID,位置)來進行安裝,安裝完成后的插件放在${IDEA_CONFIG_PATH}/plugins目錄下。重啟完成后,之前下載的插件包會被清除的。
\${IDEA_CONFIG_PATH}、\${IDEA_SYSTEM_PATH} 的具體路徑參見1.3節。下面以findbugs插件為例,來說明如何本地方式安裝插件。
Findbugs 插件下載頁:https://plugins.jetbrains.com/plugin/3847-findbugs-idea
1)將findbugs下載到磁盤上,下載位置無限制(本地安裝方式,不需要放在${IDEA_SYSTEM_PATH}/plugins目錄下)。
2)Settings 》Plugins ,選擇 install plugin from disk,然后找到下載的插件包。
3)重啟IDEA。
插件檢索:對於在線安裝自不必說,本地安裝插件,可以在https://plugins.jetbrains.com/進行查找。
2.9 集成Diff、Merge 等比較工具
相信擁有多年開發經驗的你,對於Beyond Compare必定不陌生的。如果你已習慣了使用Beyond Compare作為常用的比較工具,你也是可以集成到IDEA中的。具體方法:
切到Settings 》Tools 》Diff & Merge 》External Diff Tools:
在Use external diff tool前打勾,設置BCompare.exe的路徑。
在Use external merge tool前打勾,設置BCompare.exe的路徑。
如果你熟悉其它diff tool 或者merger tool,也同樣可以設置的。
2.10 提高效率的快捷鍵
1) 內容選擇
A)Shift + Ctrl + 向左、向右
這組快捷鍵在絕大多數編輯器里都有的,IDEA,Eclipse,Word,EditPlus等。它用於根據單詞來選擇內容。
B)Shift + 向上、向下
這組快捷鍵在絕大多數編輯器里都有的,它用於根據單詞來選擇內容。
C)Shift + Alt + 向上、向下
與Shift + 向上、向下有不同的效果
D)Ctrl + A 全選,幾乎每個軟件都支持吧
2) 注釋代碼
Ctrl + / 用於對代碼加單行注釋
2.11 護眼設置
研究表明(不知道誰研究的),RGB設置為(R:199,G:233,B:204),藍光對眼傷害減小到最弱,我在Eclipse使用了該保護色2年時間了,已經習慣了。切到IDEA上,同樣設置了。
設置方式:
Settings 》Editor 》 Color Scheme 》 General
(有的版本可能在:Settings 》Editor 》 Color and Fonts》 General )
這里的Scheme代表配色主題,Scheme選擇default,編輯Text區域的Default text為 C7EDCC 或者設置RGB為(R:199,G:233,B:204)。
2.12 在Project中隱藏IDEA、Eclipse的配置文件
在任何IDE中開發Project都會有IDE自身的配置文件,Eclipse、NetBeans都是這樣,IDEA也不能例外。然而這些文件我們平時是不會編輯的,對於有代碼潔癖的人可能不希望看到這些與項目無關的文件,這時不要忘了,IDEA可以將它們隱藏的。
Settings 》Editor 》File Types,在這個頁面里有一個 Ingore files and folder,用它可以做到的。
2.13 設置Java文件的Copyright
作為公司項目,在文件中加入copyright是必不可少的,使用它的好處也是不言而喻的。IDEA對這個也內置了支持,確實是amazing,不得不說為開發者考慮了不少。
Settings 》 Editor 》Copyright 》Copyright Profiles,在這里你可以創建公司使用的copyright信息,並指定一個唯一name。
然后在Settings 》 Editor 》Copyright 將default project copyright 指定為你創建的copyright。如此一來,在Settings 》 Editor 》Copyright 》 Formatting 下的那些類型的文件(Aspectj, CSS, ES6, Groovy, Java, HTML, JavaScript, JSP, JSPX, Less, Sass, Properties, TypeScript, XML)都可以根據它們各自的注釋符號使用這個copyright。
在Settings 》 Editor 》Copyright 》 Formatting 中,可以為不同類型的文件指定copyright的位置、注釋格式等。
如果要在copyright中使用變量,例如使用日期變量,可以用$today
Apache Velocity 中的日志格式化函數$date.format('yyyy-MM-dd',${today})測試不可用。對於要展示成yyyy-MM-dd格式的日志的,可以使用下面的代碼搞定:
#set($dMonth=$today.month) #set($dDay=$today.day) #if($dMonth<10)#set($dMonth="0"+$dMonth) #end #if($dDay<10)#set($dDay="0"+$dDay) #end
這樣一來:yyyy-MM-dd風格的日志就可以用下面的表達式表示了:
${today.year}-${dMonth}-${dDay}
配置完畢后,
1)在創建相關文件時就會自動加上相關copyright的。
2)右鍵相關目錄、相關文件時,可以在菜單中使用update copyright命令。
3)在菜單欄Code下,也可以使用update copyright命令。
2.14 使用File Template來減少一些必要的工作量
每種文件,都有其自身的格式。例如HTML、XML、pom.xml等,這些東西是必不可少的,但我們平時只關注其填充的內容。如果有一個文件模板,能夠把這些格式化的內容預先配置好,這樣就會為日常開發又減少不少的工作量的。具體的設置方法:
Settings 》 Editor 》 File and Code Templates 。在該區域可以配置file 模板。
文件模板采用的是Apache Velocity 模板語言(類似於Freemarker的)來開發的,如果對此有了解,相信設置file template並不是什么難事。
如果對Apache Velocity沒有什么了解的,可以參考IDEA官方 help手冊:https://www.jetbrains.com/help/idea/creating-and-editing-file-templates.html,根據它也可以快速掌握file template的編寫技巧。
2.15 使用Live Template自定義代碼模板
在編寫代碼時,對於循環(for,foreach,while)等方式,SQL文件有insert。熟悉Eclipse的可能知道main可以快速打出來main方法,syso可以快速打出來輸出語句。IDEA也支持這些的,但是他們變成了psvm, sout了。另外代碼中最長用的當屬logger了, 在寫logger時通常要判定是否相關級別啟用了,例如:
// 以SLF4j寫法為例: // 聲明Logger private static final Logger logger = LoggerFactory.getLogger(Xxx.class); // 使用logger if(logger.isDebugEnabled()){ logger.debug("xxxx"); }
對於這個我們完全可以利用live template來輔助生成代碼。
例如我是這樣定義的logger的:
Logger聲明:
用defl來觸發logger對象的定義,代碼模板如下:
private static final Logger logger = LoggerFactory.getLogger(Xxx.class);
使用時自己只需要替換一下類名即可。
用li來觸發info日志,代碼模板如下:
if(logger.isInfoEnabled()){
logger.info("");
}
使用時自己只需要寫相關日志既可。同理,對於不同的日志級別,都設置這樣一個模板即可。
2.16 關閉不必要的代碼審查
使用IDEA時,它能幫我們分析、檢查各種文件中可能存在的問題,譬如說可能存在NPE、代碼需要抽取(表現在有大量重復)等。要查看文件中有哪些問題,在編輯窗口的右側即可看到,通常warn用黃色,error用紅色。這樣可以幫助我們減少代碼中的Bug。
但是我們不能對此依賴太多,也就是不能讓它檢查太多內容了,否則IDEA會變慢,內存不足的情況會嚴重影響開發效率。這其中讓人最煩的是泛型檢查了,在JDK7中的泛型加入了類型推斷,如果你的代碼里有JDK7之前的,例如List<String> arr = new ArrayList<String>();后面的尖括號中的String通常會寫的,但是IDEA就給你標warn了。
總之,我們需要將不必要的檢查去掉的。具體方式:在Settings > Editor > Inspections 區域,可以根據warn的提示,來快速搜索是哪條規則報出來的,將其關閉即可。
2.17 文件編碼、換行符設置
通常我們會將整個工作空間下的文件設置為UTF8編碼、換行符設置Unix下的換行符。
文件編碼統一:
切到Settings > Editor > File Encodings 區域,將Global Encoding、Project Encoding、Properties Files 的文件編碼統一為UTF8
換行符統一:
切到Settings > Editor > Code Style 區域,將 line separator 設置為:Unix and OS X
2.18 Tab鍵用4個空格替換
有的開發團隊,會要求制表符tab鍵用4個空格替換。設置方式:
切到Settings > Editor > Code Style ,在其下為各種語言的文件設置tab鍵、縮進等。將他們的Use tab character 勾掉即可。
2.19 打開Class,Package的模糊導入
在使用Eclipse時,如果有類沒有導入,可以通過兩種方式導入類。
1) 鼠標放上去,顯示可能存在的導入列表供你選擇
2) 使用Shift + Ctrl + O 自動識別導入。
在使用IDEA時,發現這點做得不如Eclipse好。
1) Alt + Enter 只能用一次。
2) 又不能自動推斷。其實並不是不能,而是模糊推斷的功能被關閉了。
打開方式:切到 Settings > Editor > General > Auto Import 區域,選擇 Add unambiguous imports on the fly。
2.20 切換扁平風格與層疊風格的導航
在IDEA的導航欄的展現風格,和Eclipse一樣,支持兩種風格:扁平式、層疊式。
扁平式:包名整個平鋪展現,便於使用IDEA包搜索快速檢索。這種方式適合於項目結構、包名並不是很清晰的開發者。有密集恐懼症的人不適合。
層疊式:包名以樹狀方式展現。這個方式適合於項目結構,包名清晰的開發者。
切換方式:
在package瀏覽器中設置,勾上Flatten Package是扁平風格,勾掉是層疊風格。
2.21 關閉package瀏覽器中的 show Members
個人認為這個是多此一舉了,開啟他會拖慢目錄下文件展開速度的。此外,有文件Structure這個窗口,這個完全可以滿足需要的。
關閉方式:在package瀏覽器中設置,勾掉show Members
2.22 編輯多個tab時展示風格
在開發過程中,打開多個文件是很平常的。在大多數編輯器中,為了在編輯器盡可能多的展示文件內容,打開多個文件時,會隱藏一些。在IDEA中,可以選擇兩種風格:1)隱藏顯示不下的文件,2)鋪開所有的文件。這個可以根據個人喜好進行調掙。
調整方式如下:
切換到Settings > Editor > General > Editor tabs區域,可以看到有這樣一個開關:Show tabs in single row。
2.23 設置project | module 構建的JDK版本
一個project中存在多個module是很常見的,有時為了需要,這些模塊可能會使用多個JDK版本。如何指定呢?
打開 File > Project Structure > Project Setting ,
在project 區域,可以設置整個project的JDK版本:

切到module區域,可以指定 module的JDK版本:

在設置完project,module的JDK版本后(上面 只是設置了SDK,Language版本),還需要對編譯器進行設置:

當一個類實現了Serializable接口時,我們應該為其指定serialVersionUID。在使用Eclipse時,如果一個類應該寫serialVersionUID時,是會自動提示的,並且當點擊相關提示時,會自動生成serialVersionUID的,但是發現IDEA並沒有。
Settings > Editor > Inspections , 把serializable class without serialVersionUID勾上即可。

接下來在相關類上使用Alt+Enter就可以生成了。

在java程序開發中,properties文件可以說是最常用的配置文件之一。其中一個重要的一項是作為國際化文件。
對於國際化文件時,我們平時期望是:在文件中編寫中文,自動轉碼。這樣來避免使用native2ascii。
但默認情況下,並不會顯示為中文的。配置方式:
Settings > Editor > File Encoding ,選中后,在配置頁的最下面有:

把Transparent native to ascii 打勾即可。
目前項目組中有一大部分人已轉向使用IDEA來開發了。在對於java .properties 文件的保存處理中,Eclipse與IDEA處理不同:
Eclipse: 會將所有的中文轉為 小寫
IDEA:會將所有的中文轉為 大寫
這樣會導致其他人下次更新代碼時,有可能出現代碼沖突的問題。所以為了避免該問題的發生,需要將兩者統一。Eclipse目前沒有找到改變大小寫的配置。
IDEA 可以通過在 bin/idea.propertie中配置來修改。所以所有使用IDEA的同學,請做如下配置:
# ${IDEA_HOME}/bin/idea.properties 文件中修改:
idea.native2ascii.lowercase=true
用了幾天時間,目前遇到的問題,就這么多。歡迎大家補充,讓我們的IDEA健步如飛,變成真正的編程利器。
