自己动手打造一款intelliJ IDEA的主题-MyGruvb
熟悉的vim的同学大多都用过的一个配色Gruvbox,整体给人感觉沉稳、清晰,对眼睛也十分友好,没有过于暗或者亮的地方,也不花里胡哨。正重要的是,微微泛黄,在晚上看起来也很舒服。
gruvbox-vim除了vim之外,我其实有一半的时间都在jetbrains的IDE里干活,比如IntelliJ IDEA 和 DataGrip,在2019.1版本之后,jetbrains也全家桶支持自定义主题了,但是一直到今天其实都没有找到用起来舒服的 配色,有几款喜欢的也都是这里或者那里不太舒服,所以决定自己打造一款基于gruvbox的主题配色。
最终效果图大概是这个样子,插件目前已经审核通过,可以直接在jetbrains任何编辑器中下载使用。
MyGruvbox Java效果除了Java配色之外,还花了些时间调整了下其他和Jvm方言和前端技术栈语言的配色,比如这些:
JSX & Javascript
JSX & JavascriptDataGrip-SQL
DataGrip-SQLCSS&HTML
CSS&HTML制作过程
整个制作过程分为三部分
- 查看官方SDK文档,了解插件开发基本知识
- 制作IDE UI的配色
- 制作代码Scheme Colors
IDE插件项目创建
之前没有接触过IDE插件的开发,所以先花时间阅读了下官方文档。我个人其实就阅读了三个部分:
创建项目其实很简单,IDEA旗舰版本默认是安装DevKit的,所以可以直接基于DevKit创建和开发插件项目。
image.png主题制作
主要说说主题制作部分,其他内容都可以参考官方文档学习。
主题分为两部分:UI配色和代码配色。
- UI配色:就是IDE的面板,按钮,对话框,菜单,工具栏等等上的图标、背景、字体、边框的配色。
UI配色文件在一个josn文件里进行编辑和调整,可以点击上面的按钮随时预览和调整,也可以实施编辑和预览。
ui theme edit- 代码配色就很好理解了,最核心的内容,各种语言的关键字,方法,变量等等的字体颜色,大小,显示效果等等。
代码的配色调整官方建议是使用setting面板里面Color Scheme编辑功能进行设计 ,最后使用导出功能添加到工程项目里即可。
code color scheme edit设计思路
Gruvbox 颜色卡-dark整套主题配色都是基于Gruvbox的,然后针对IDE和Java的特点进行调整。我给自己设立几个目标和需要注意的点:
- 代码整体配色和Gruvbox保持一致
- UI配色和代码配色贴近,整体风格统一
- 针对Java语法特点进行调整,代码整体观感避免花花绿绿,配色使用尽量克制
- 避免出现和默认主题颜色上的认知冲突,比如默认红色为错误和未知内容,所以所以Gruvbox的红色关键字配色就不能使用
- 避免出现内容和背景颜色贴近,导致阅读困难或者引起视觉疲劳。这一点其实很重要,之前使用的很多三方主题都有类似的问题。
基于以上目标,其实第一版的设计很快就完成了,但是细节上的颜色搭配其实调整了很久,尤其是为了满足最后一点,没少折腾。
关于代码配色的设计,其实是一件很有意思的事情,整个过程下来,也是我更理解代码配色对于编码编写和阅读的重要性。
关于代码配色的设计和制作其实整体还是蛮简单的,直接拿着IDEA的默认黑色主题Dracula进行复制,然后在上面进行修改就可以了。第一步是设置背景和其他Gruvbox的颜色,然后调整警告,错误,文本等等基础内容的颜色。第二步就是专门针对Java语言调整,这一步也是最重要的一步。整个过程当然也不是从0开始的,借鉴了大量我之前使用的主题的设计思路,然后使用相近的Gruvbox配色进行替换。
- 接口(加粗)和类进行区分(在IDEA的默认配色中两者风格是一致的)
- 除了错误和警告,避免使用任何形式的下划线(很讨厌下划线,所以用在错误和警告上,这样一看见就会引起负面情绪,让我更想去删掉或者修复掉对应的内容)
- 辅助语法提示颜色尽量和背景有明显区分但是不突出,避免影响编写代码时的注意力。打个比方,打开一个类,第一眼看过去肯定是方法申明和语法逻辑,而不是醒目的范型提示。
-
颜色使用上的克制。在Java中,需要强调的内容添加颜色,其余的全部保持默认。比如,类、this的字段、关键字、字符串、常量、注解这些需要强调的给予对应的颜色进行区分。其余的比如方法调用、变量、局部变量、静态方法、运算符等等都保持默认颜色。然后就是注释和编辑器的提示,全部都弱化,避免和代码主体混淆,但是仍然容易阅读。
-
还有一些就是从其他地方借鉴的:比如静态都是斜体(方法和常量)。对于静态字段,在编写时一眼能看出来和普通常量的区别也很有用,所以颜色上也略深于普通变量。
当然,整个代码配色的设计过程中还有大量的内容,很多都是借鉴了其他我比较喜欢的主体的设计思路,最终完成了对于我个人比较满意的一套配色。我相信,对于大部分Java开发的同学,这套配色应该都是相对比较有好的,欢迎大家在IDEA的插件仓库中下载使用,有任何使用问题也欢迎提Issues。
插件页面