自己動手打造一款intelliJ IDEA的主題-MyGruvbox

熟悉的vim的同學(xué)大多都用過的一個配色Gruvbox,整體給人感覺沉穩(wěn)、清晰,對眼睛也十分友好,沒有過于暗或者亮的地方,也不花里胡哨。正重要的是,微微泛黃,在晚上看起來也很舒服。

gruvbox-vim

除了vim之外,我其實(shí)有一半的時間都在jetbrains的IDE里干活,比如IntelliJ IDEA 和 DataGrip,在2019.1版本之后,jetbrains也全家桶支持自定義主題了,但是一直到今天其實(shí)都沒有找到用起來舒服的 配色,有幾款喜歡的也都是這里或者那里不太舒服,所以決定自己打造一款基于gruvbox的主題配色。

最終效果圖大概是這個樣子,插件目前已經(jīng)審核通過,可以直接在jetbrains任何編輯器中下載使用。

MyGruvbox Java效果

除了Java配色之外,還花了些時間調(diào)整了下其他和Jvm方言和前端技術(shù)棧語言的配色,比如這些:

JSX & Javascript

JSX & Javascript

DataGrip-SQL

DataGrip-SQL

CSS&HTML

CSS&HTML

制作過程

整個制作過程分為三部分

  • 查看官方SDK文檔,了解插件開發(fā)基本知識
  • 制作IDE UI的配色
  • 制作代碼Scheme Colors

IDE插件項(xiàng)目創(chuàng)建

之前沒有接觸過IDE插件的開發(fā),所以先花時間閱讀了下官方文檔。我個人其實(shí)就閱讀了三個部分:

創(chuàng)建項(xiàng)目其實(shí)很簡單,IDEA旗艦版本默認(rèn)是安裝DevKit的,所以可以直接基于DevKit創(chuàng)建和開發(fā)插件項(xiàng)目。

image.png

主題制作

主要說說主題制作部分,其他內(nèi)容都可以參考官方文檔學(xué)習(xí)。

主題分為兩部分:UI配色代碼配色

  • UI配色:就是IDE的面板,按鈕,對話框,菜單,工具欄等等上的圖標(biāo)、背景、字體、邊框的配色。

UI配色文件在一個josn文件里進(jìn)行編輯和調(diào)整,可以點(diǎn)擊上面的按鈕隨時預(yù)覽和調(diào)整,也可以實(shí)施編輯和預(yù)覽。

ui theme edit
  • 代碼配色就很好理解了,最核心的內(nèi)容,各種語言的關(guān)鍵字,方法,變量等等的字體顏色,大小,顯示效果等等。

代碼的配色調(diào)整官方建議是使用setting面板里面Color Scheme編輯功能進(jìn)行設(shè)計(jì) ,最后使用導(dǎo)出功能添加到工程項(xiàng)目里即可。

code color scheme edit

設(shè)計(jì)思路

Gruvbox 顏色卡-dark

整套主題配色都是基于Gruvbox的,然后針對IDE和Java的特點(diǎn)進(jìn)行調(diào)整。我給自己設(shè)立幾個目標(biāo)和需要注意的點(diǎn):

  • 代碼整體配色和Gruvbox保持一致
  • UI配色和代碼配色貼近,整體風(fēng)格統(tǒng)一
  • 針對Java語法特點(diǎn)進(jìn)行調(diào)整,代碼整體觀感避免花花綠綠,配色使用盡量克制
  • 避免出現(xiàn)和默認(rèn)主題顏色上的認(rèn)知沖突,比如默認(rèn)紅色為錯誤和未知內(nèi)容,所以所以Gruvbox的紅色關(guān)鍵字配色就不能使用
  • 避免出現(xiàn)內(nèi)容和背景顏色貼近,導(dǎo)致閱讀困難或者引起視覺疲勞。這一點(diǎn)其實(shí)很重要,之前使用的很多三方主題都有類似的問題。

基于以上目標(biāo),其實(shí)第一版的設(shè)計(jì)很快就完成了,但是細(xì)節(jié)上的顏色搭配其實(shí)調(diào)整了很久,尤其是為了滿足最后一點(diǎn),沒少折騰。

關(guān)于代碼配色的設(shè)計(jì),其實(shí)是一件很有意思的事情,整個過程下來,也是我更理解代碼配色對于編碼編寫和閱讀的重要性。

關(guān)于代碼配色的設(shè)計(jì)和制作其實(shí)整體還是蠻簡單的,直接拿著IDEA的默認(rèn)黑色主題Dracula進(jìn)行復(fù)制,然后在上面進(jìn)行修改就可以了。第一步是設(shè)置背景和其他Gruvbox的顏色,然后調(diào)整警告,錯誤,文本等等基礎(chǔ)內(nèi)容的顏色。第二步就是專門針對Java語言調(diào)整,這一步也是最重要的一步。整個過程當(dāng)然也不是從0開始的,借鑒了大量我之前使用的主題的設(shè)計(jì)思路,然后使用相近的Gruvbox配色進(jìn)行替換。

  • 接口(加粗)和類進(jìn)行區(qū)分(在IDEA的默認(rèn)配色中兩者風(fēng)格是一致的)
接口和類
  • 除了錯誤和警告,避免使用任何形式的下劃線(很討厭下劃線,所以用在錯誤和警告上,這樣一看見就會引起負(fù)面情緒,讓我更想去刪掉或者修復(fù)掉對應(yīng)的內(nèi)容)
錯誤和警告
  • 輔助語法提示顏色盡量和背景有明顯區(qū)分但是不突出,避免影響編寫代碼時的注意力。打個比方,打開一個類,第一眼看過去肯定是方法申明和語法邏輯,而不是醒目的范型提示。
語法提示
  • 顏色使用上的克制。在Java中,需要強(qiáng)調(diào)的內(nèi)容添加顏色,其余的全部保持默認(rèn)。比如,類、this的字段、關(guān)鍵字、字符串、常量、注解這些需要強(qiáng)調(diào)的給予對應(yīng)的顏色進(jìn)行區(qū)分。其余的比如方法調(diào)用、變量、局部變量、靜態(tài)方法、運(yùn)算符等等都保持默認(rèn)顏色。然后就是注釋和編輯器的提示,全部都弱化,避免和代碼主體混淆,但是仍然容易閱讀。

  • 還有一些就是從其他地方借鑒的:比如靜態(tài)都是斜體(方法和常量)。對于靜態(tài)字段,在編寫時一眼能看出來和普通常量的區(qū)別也很有用,所以顏色上也略深于普通變量。

靜態(tài)與非靜態(tài)

當(dāng)然,整個代碼配色的設(shè)計(jì)過程中還有大量的內(nèi)容,很多都是借鑒了其他我比較喜歡的主體的設(shè)計(jì)思路,最終完成了對于我個人比較滿意的一套配色。我相信,對于大部分Java開發(fā)的同學(xué),這套配色應(yīng)該都是相對比較有好的,歡迎大家在IDEA的插件倉庫中下載使用,有任何使用問題也歡迎提Issues。

插件頁面
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容