本文共计 1.5 W 字,80 张图介绍 IDEA 中令人相见恨晚的技巧,本文中从入门、简单项目创建开始,介绍 IDEA 中多光标操作、常用配置、插件、版本控制等等。一定包含你在别的文章没有看到的内容,对了,我把全网 IDEA 相关的优质内容聚合了起来,放在了 GitHub 上,仓库名为:awesome-IntelliJ-IDEA,欢迎给个 Star!
地址:github.com/xiaoxiunique/awesome-IntelliJ-IDEA
提醒一下,本片文章太长,预计阅读时间 30 min,建议转发后再看。本文章目录如下:
1. 创建项目
创建项目
创建包、Class
编码
打包
...
2. 操作基础
光标操作
数列光标
行尾添加光标
指定位置添加光标操作
格式批量调整
批量添加属性注释
提取 Json 字段信息
3. IDEA 常用快捷键
4. IDEA 常用设置
新窗口的形式打开多个项目
编码问题
设置编译器
设置类注释
自动导包
内存使用量展示
开启悬浮提示
修改字体大小
显示多行 Tab
设置字体、行距
GIT 配置
MAVEN 配置
…
5. IDEA 常用插件
AlibabaCloudToolkit
Git Flow
PlantUML
Rainbow Brackets
Alibaba Java Coding Guidelines
翻译插件
mybatis 插件
IntelliJ Lombok plugin
GenAllSetter
GenDaoCode
CodeGlance
RestfulToolkit
Grep Console
MyBatis Log Plugin
GsonFormat
VisualVm Launcher
jclasslib bytecode viewer
Codota
Auto filling Java call arguments
Rainbow Brackets
SequenceDiagram
Java Stream Debugger
Ace Jump
6. IDEA 好看字体
Consolas
JetBrainsMono
7. 版本控制
查看每一行代码的条件人, 提交时间
克隆远程代码
拉取远程代码
将暂存区代码提交到本地库
将本地库 提交到远程库
切换分支, 或拉取远程分支
查看当前打开类 历史记录
Stash
Check Out
8. Terminal 配置
1. 创建项目
接下展示如何创建、运行和打包一个打印 Hello,World 的简单 Java 应用程序!在此过程中,算是入门过程,你将熟悉 IntelliJ IDEA 特性,以提高作为开发人员的工作效率: 编码辅助和补充工具。
后面会介绍 IDEA 中一些高阶操作,大可提升你的效率,一定看到最后哦。
创建一个新的 Java 项目
在 IntelliJ IDEA 中,一个项目可以帮助您将源代码、测试、使用的库、构建说明和个人设置组织到一个单元中。
1. 启动 IntelliJ IDEA。
如果打开欢迎屏幕,请单击“新建项目”。否则,从主菜单中选择 File | New | Project。
2. 在 New Project 向导中,从左侧的列表中选择 Java。
3. 要在 intellijidea 中开发 Java 应用程序,您需要 javasdk (JDK)。
如果所需的 JDK 已经在 IntelliJ IDEA 中定义,那么从 Project SDK 列表中选择它。
如果 JDK 安装在您的计算机上,但是没有在 IDE 中定义,那么选择 Add JDK 并指定 JDK home 目录的路径(例如,/library/java/javavialmachines/JDK-13.0.1)。
如果您的计算机上没有必要的 JDK,选择 Download JDK。在下一个对话框中,指定 JDK 供应商(例如 OpenJDK)、版本,如果需要则更改安装路径,然后单击 Download。
在本教程中,我们不打算使用任何其他库或框架,因此请单击“下一步”。不要从模板创建项目。在本教程中,我们将从头开始执行所有操作,因此请单击“下一步”。
为项目命名,例如:HelloWorld。 如有必要,请更改默认项目位置并单击“完成”。
包用于将属于同一类别或提供类似功能的类组合在一起,用于构造和组织具有数百个类的大型应用程序。
1. 在 Project 工具窗口中,选择 src 文件夹,按 Alt + Insert,然后选择 Java Class
2. 在 Name 字段中,键入 com.example.HelloWorld. HelloWorld 并单击 OK. IntelliJ IDEA 创建 com.example.HelloWorld 包和 HelloWorld 类。
与该文件一起,IntelliJ IDEA 自动为您的类生成了一些内容。在这种情况下,IDE 插入了包语句和类声明。这是通过文件模板来完成的。根据您创建的文件的类型,IDE 插入初始代码和预期在该类型的所有文件中存在的格式。有关如何使用和配置模板的详细信息,请参阅文件模板。
通过动态模板增加 main 方法
如果你能看到 out/artifacts
文件夹,那么你将能看到 Jar 包
当你会构建一个应用程序了,接下来就是一些基础操作,你可能不知道的基础操作。为什么使用 IDE?不就是因为想提高效率么?很多有用的特性都不知道,怎么提高效率?
在相同内容后生成光标,一个一个选择 :
具体什么意思可以看下面这个动图就行了,需要配合快捷键使用,可以在相同的关键字后面生成光标,这样删除、修改添加新的代码不就方便了吗?
Windows:Alt + J
Mac: Ctrl +
G
在所有的相同的内容后添加光标,一步到位:
使用快捷键就能在所有的 word 后生成光标
Windows:Ctrl + Shift + Alt + J
Mac: Ctrl + Command + G
数列光标:
方法:alt + 按住鼠标左键拖动就能达到下面动图的效果了,效率 max!
行尾添加光标
alt + 按住鼠标左键拖动,从左侧拖动到右侧。
在指定位置添加光标操作
将上访左侧的代码批量变为右侧代码
ctrl + alt + enter 将光标移动到当前行的上一行
将上图左侧只有注释的类,添加上 swagger 信息
在多个相同结构 Json 中提取某字段信息
提取左侧 Json 中所有的 role 字段
3. IDEA 常用快捷键
上面介绍了一些配合鼠标使用的快捷键,还有一些常用快捷键。
方法参数提示ctrl + p
非常实用的快捷键, 有的时候我们自己写的方法, 或者在看一些源码时, 都非常有用
文本大小写转换
ctrl + shift + U
折叠代码/展开代码
ctrl + - / ctrl + +
全局查找文本
ctrl + shift + F
快速查找和打开最近使用过的文件码
ctrl + E
自动代码片
ctrl + j
实现接口方法
ctrl + i
查看当前类的子类
ctrl + h
将当前行和下一行进行合并
ctrl + shfit + j
将光标跳到当前行的上一行
有时候在写完一行代码的时候需要添加注释, 或者为类属性添加注释的时候需要跳到当前行的上一行, 这个快捷键就非常方便
ctrl + alt + enter
idea git 提交
ctrl + k
删除当前行
ctrl + y
重写 或者 实现接口或父类方法
ctrl + o
显示类之间的关系
ctrl + alt + u
删除类中没有用到的 package
ctrl + alt + o
进入设置界面
ctrl + alt + s
在当前光标在的这样一行的下一行添加一行
ctrl + shfit + enter
弹出, 当前类中的方法集合
ctrl + F12
最常用的快捷键之一, 快速的查找方法
添加书签
ctrl + F11
搜索文件
ctrl + shift + n
搜索类合
ctrl + n
最常用的快捷键之一, 项目慢慢的变大, 文件越来越多, 每次用鼠标去找 就太低效了
快速生成 try, if
等语句
alt + shift + t
当你试用了之后, 你会爱上这个快捷键的
抽取局部变量
ctrl + alt + v
将当前选中的代码抽取为一个局部变量
进入到实现子类中
ctrl + alt + b
在使用
mvc
框架的时候, 往往我们只有一个接口的实例 这个快捷键可以直接到实现类中
格式化代码
让代码变得优美, 是每个程序员都应该注意的事, 方便自己和他人阅读, 利人利己
idea 多光标选择
按下滚轮上下拖动鼠标即可
ctrl + alt + L
idea 批量修改相同内容
ctrl + alt + shift + j
有的时候数据需要批量处理, 比如, 正常来说我们的实体类, 在使用
mybatis
等逆向工程进行生成的时候, 一般属性是有注释的, 但是在针对如果我们使用了swagger
等插件需要来显示传递实体所代表的含义的时候, 就需要我们自己一个个的去写, 就会显得异常麻烦
运行当前类
ctrl + shift + F10
在写一些测试代码的时候 这个快捷键就显得特别方便
从多项目中启动一个 debug 模式
alt + shfit + F9
在微服务中 多个工程在一个项目中的时候, 这个方法就比较的好用, 这样就不用自己一个一个的去点省去很多没必要的操作
从多项目中启动一个 正常模式
alt + shfit + F10
重新编译当前项目
ctrl + shift + F9
当你发现有的问题 特别的奇怪, 命名表面上没问题, 但就是项目运行不了的时候, 重新编译一下获取就好了
查看当前类在哪些地方被使用过
快速的查看选中类, 选中方法的定义
有的时候我们不想进入方法内部, 或者进入类的内部查看细节, 想要在外面就探查清楚, 就可以使用此种方法
ctrl + shift + i
比较强大的几个快捷键之一 Ctrl + ~
(感叹号旁边的按键)
共有五种可供选择的操作
Switch Code Formatter (切换代码格式化程序)
1. Color Scheme (配色方案)
可以设置一些常用的配色, 字体样式, 可以一键切换
3. Keymap
(快捷键列表)
4. View Mode (显示模式)
5. Look and Feel (设置软件主题)
idea 调出版本控制操作
alt + ~
4. IDEA常用设置
File - Settings - Appearance & Behavior - System Settings
File - Settings - Editor - File Encodings
File - Setting - Build - Compiler - Java Compiler
File - Editor- File and Code Templates
$$end$$
可以设置光标结束的位置
File - Editor- General - Auto Import
由于日常开发时都是在公司的办公电脑上进行的,所以内存总是不够用,但是又不清楚 IDEA 具体实时的占用了多少内存。这个时候对于一些内存并不是太够的开发人员来说能看到实时的内存使用量还是比较好的
File - Settings - Appearance & Behavior
有时候在看代码的时候,不清楚一个类具体是干什么的,就会点进去看这个类的注释,但是强大的 IDEA 是支持不用点进去就可以看到注释的以及类的相关信息的。
File - Settings - Editor - General
IDEA 也支持向浏览器那样按住 Ctrl+鼠标滚轴来改变编辑区的字体的大小
File-->Settings-->Editor-->General。
当我们打开的标签页多了的时候,默认的会隐藏在右侧,当我们需要的时候在右侧找到后再打开。IDEA 是支持多行显示的,这样在大屏幕的显示器上也不用总去点击右侧的去找刚才打开过的文件了
File - Settings - Editor - General - Editor Tabs
File - Settings - Editor - Font
File - Settings - Version Control - Git
File - Settings - Build - Build Tools - Maven
maven 阿里镜像配置
nexus
*
http://maven.aliyun.com/nexus/content/groups/public/
具体步骤:顶部工具栏 File ->Other Settings -> Default Settings -> Auto Import
说明:开启自动编译之后,结合Ctrl+Shift+F9 会有热更新效果。
具体步骤:敲击 Ctrl + Shift + Alt + / 然后双击Shift搜索进入Registry ,找到compiler.automake.allow.when.app.running ,然后勾选上。
最后 如果想知道SpringBoot如何具体实现热部署的请点击SpringBoot+IDEA实现热部署教程:
https://www.jianshu.com/p/f658fed35786
具体步骤:
File | Settings | Editor | General | Code Completion Case | Sensitive Completion = None
取消大小敏感,在编写代码的时候,代码的自动提示将更加全面和丰富。
默认的白色背景和细小的字体会影响大家的编码体验,这里特意提供了调整代码窗的快捷配置。打开配置,搜索Font,然后再Font可以调整字体类型,Size可以调整字体大小,如图:
很多人可能并不习惯IDEA的快捷键,为了方便,这里我们将快捷键设置为跟 Eclipse一样。
具体步骤: File -> Settings -> Keymap - > 选择Eclipse .
从Eclipse转过来的小伙伴 可以放心使用
具体步骤:顶部导航栏 - View -> 勾选 Toolbar & Tool Buttons
5. IDEA 常用插件
AlibabaCloudToolkit
这个插件更加适用于小型项目,或者在测试环境开发。生产环境 个人感觉不太适用。
个人经常会有这样的需求,每次自己更新完测试环境之后, 就需要 Maven
打包clean install
, 然后copy
jar
包, 利用ftp
工具上传jar
包到测试服务器, 然后kill
服务, 在启动服务 java -jar
, 有时更新频繁 这就是一件非常麻烦的事
Cloud Toolkit
是本地 IDE
插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,您可以将本地应用一键部署到云端(ECS、EDAS 和 Kubernetes 等
)和任意服务器;并且它还内置了 Arthas
程序诊断、Dubbo工具
、Terminal Shell
终端和 MySQL
执行器等工具。
官方链接:https://www.aliyun.com/product/cloudtoolkit
简单的说, 安装了这个插件之后,Idea 就具备了一些 Jenkins 的自动部署的功能
1 安装
在 Idea 工具中 Plugins 直接搜索安装
2 使用
在安装完成之后, 在工具栏中就会出现阿里云的按钮, 点击按钮
然后点击 Deploy to Host
, 然后下方就会出现添加主机页面
点击 Add Host
以我自己的博客为例, 输入完配置之后, 点击 Test Connection
, 出现 Succeeded
, 点击 add
, 代表添加成功
然后再点击 Deploy to Host
点击Run
, idea
便会, 先使用maven
打包, 后发送到服务器的指定位置
后续还可以 监听启动日志, 很简单, 就是 Advanced
里面, 大家看看就知道了,
后续有时间再完善笔记吧
IDEA 插件 Git Flow
Git Flow:
https://medium.com/@rafavinnce/gitflow-branch-guide-8a523360c053
最开始还没有初始化的时候,点击右下脚 GitFlow init
直接 默认 设置就好,点击 Ok 之后,就可以开始使用了。
按照最规范的流程走,可以避免在未来某个阶段掉坑里。
Git 版本管理规范:
master:永远处于production-ready状态
主分支,产品的功能全部实现后,最终在master分支对外发布;
只读分支,只能从release或hotfix分支合并,不能修改;
所有在master分支的推送应该做标签记录,方便追溯。
develop:最新的下次发布的开发状态
主开发分支,基于master分支克隆,发布到下一个release;
只读分支,feature功能分支完成,合并到develop(不推送);
develop拉取release分支,提测;
release/hotfix分支上线完毕,合并到develop并推送。
feature:开发新功能都从develop分支出来,完成后merge回develop
功能开发分支,基于develop分支克隆,用于新需求的开发;
功能开发完毕后合并到develop分支(未正式上线之前不能推送到远程中央仓库)
feature可以同时存在多个,用于团队多功能同步开发,属于临时分支,开发完毕后可以删除。
release:准备要release的版本,只修bug。从develop出来,完成后merge回master和develop
测试分支,feature分支合并到develop分支之后,从develop分支克隆;
只要用于提交给测试人员进行功能测试,测试过程中如果发现BUG在release分支修复,修复完成上线后合并到
develop/master分支并推送完成,做标签记录;
临时分支,上线后可删除。
hotfix:等不及release版本就必须马上修复master上线。从master出来,完成后merge回master和develop
补丁分支,基于master分支克隆,主要用于对线上的版本进行BUG修复;
修复完毕后合并到develop/master分支并推送,做标签记录;
所有hotfix分支的修改会进入到下一个release;
临时分支,补丁修复上线后可以删除;
IDEA 插件 PlantUML
之前介绍过 使用 Vscode 画 UML,实际上 idea 中也有类似的插件 可以画 UML 图。
PlantUML 语法:https://plantuml.com/zh/component-diagram
在安装完官方的插件之后,还需要额外安装一个 graphviz ,不然有的复杂的用例图就没办法展示了。
graphviz:https://graphviz.org/download/
2. windows 安装
choco install graphviz
使用
新建文件 - PlantUML File - 选择想要创建的类型
流程图 CODE
用例图
用例图 Code
@startuml
left to right direction
actor 普通 as User
actor 审核 as Aduitor
actor 编辑 as Editor
actor 营销 as Marketing
actor 运营 as Operator
actor 管理员 as Admin
Admin --|> User
rectangle 社区 {
User -- (查看文章)
User -- (发布文章/帖子)
(帖子管理) <|-- (置顶)
(帖子管理) <|-- (审核)
(帖子管理) <|-- (推荐)
(帖子管理) <|-- (删除)
(社区运营) <|-- (帖子管理)
Operator -- (社区运营)
Aduitor -- (社区运营)
Editor -- (社区运营)
Marketing -- (社区运营)
(App 配置) <|-- (商品图片配置)
(App 配置) <|-- (启动页配置)
(App 配置) <|-- (活动 Banner)
(App 配置) <|-- (互动 Banner)
(App 配置) <|-- (商城配置)
(App 配置) <|-- (功能配置)
(App 配置) <|-- (产品配置)
(App 配置) <|-- (系统配置)
(App 配置) <|-- (新人礼包)
(App 配置) <|-- (个人中心)
(App 配置) <|-- (渠道配置)
Admin -- (App 配置)
}
@enduml
类图
彩虹括号 ???? Rainbow Brackets
由于很多人没有养成好的编码风格,没有随手 format 代码的习惯,甚至有些同事会写代码超过几百行,阅读起来将非常痛苦。
痛苦的原因之一就是找到上下文,由于括号太多,不确定当前代码行是否属于某个代码块,此时这个插件就会帮上大忙.
阿里巴巴编码规范:Alibaba Java Coding Guidelines
实时监测代码的规范性, 从代码层面减少空指针等异常的出现,阿里巴巴出品的Java代码
规范插件, 可以扫描整个项目找到不规范的地方 并且大部分可以自动修复。
虽说检测功能没有 findbugs
强大,但是可以自动修复, 阿里巴巴 Java 编码指南插件支持。
让代码变得更规范, 是我们每一位程序员都应该记在心中的事。
当鼠标移到变量上时, 就会自动提示 不符合 lowerCamelCase
命名风格
equals
public static void main(String[] args) {
String str = null;
if (str.equals("test")) {
System.out.println("success");
}
}
WARNING
当我们初学 Java
时, 很有可能会犯这样的错误, 这里很明显会报空指针异常, 而在编辑器中
安装插件之后, 编辑器已经给出详细提示,"test“
应该做为 equals
方法的调用方, 并给出了原因, 应为这样很容易导致空指针异常, 并给出了例子
比如我创建了一个测试类 test.java
,就会出现如下提示
类名,首字母需要大写。缺少作者注释。
mybatis 插件:Free Mybatis plugin
安装此插件后可以节约很多的开发时间, 在
mapper
层接口可以直接进入xml
文件中
Lombok pom.xml 文件配置
org.projectlombok
lombok
1.16.18
provided
生命很宝贵, 没有必要浪费在这个重复的工作上, 尤其是如果我们使用传统的 get set 方法, 在实体类进行变更的时候, 或多添加了列, 或减少了列, 又要重新生成对应的 get set 这难道不就是浪费时间浪费生命吗?
还不熟悉使用的可以看这篇文章,Java 开发之 Lombok 必知必会:
juejin.im/post/5cf3edf7e51d454f71439c79
在 Java 方法中, 根据 new 关键词, 为 Java Bean 生成所有Setter方法。按 GenAllSetter 键两次, 会为 Setter 方法生成默认值。
一键生成 dao xml service
在右侧生成代码地图
一套 Restful 服务开发辅助工具
1.根据 URL 直接跳转到对应的方法定义 ( Ctrl \ or Ctrl Alt N );
2.提供了一个 Services tree 的显示窗口;
3.一个简单的 http 请求工具;
4.在请求方法上添加了有用功能: 复制生成 URL;,复制方法参数...
5.其他功能: java 类上添加 Convert to JSON 功能,格式化 json 数据 ( Windows: Ctrl + Enter; Mac: Command + Enter )。
高亮log不同级别日志,看日志的时候一目了然。
把 Mybatis 输出的sql日志还原成完整的sql语句,看起来更直观。
快速的讲一个 json转换为一个实体 安装完插件后 alt + s 放入正确的 json格式
运行java程序的时候启动visualvm,方便查看jvm的情况 比如堆内存大小的分配
某个对象占用了多大的内存,jvm调优必备工具
一款可视化的字节码查看插件
支持智能代码自动提示,该功能可以增强 IDEA 的代码提示功能。
支持 JDK 和知名第三方库的函数的使用方法搜索,可以看到其他知名开源项目对该函数的用法。当我们第一次使用某个类,对某个函数不够熟悉时,可以通过该插件搜索相关用法,快速模仿学习。
开发中,我们通常会调用其它已经编写好的函数,调用后需要填充参数,但是绝大多数情况下,传入的变量名称和该函数的参数名一致,当参数较多时,手动单个填充参数非常浪费时间。
该插件就可以帮你解决这个问题。安装完该插件以后,调用一个函数,使用 Alt+Enter 组合键,调出 “Auto fill call parameters” 自动使用该函数定义的参数名填充。
由于很多人没有养成好的编码风格,没有随手 format 代码的习惯,甚至有些同事会写代码超过几百行,阅读起来将非常痛苦。
痛苦的原因之一就是找到上下文,由于括号太多,不确定当前代码行是否属于某个代码块,此时这个插件就会帮上大忙。
SequenceDiagram 可以根据代码调用链路自动生成时序图,超级赞,超级推荐!
这对研究源码,梳理工作中的业务代码有极大的帮助,堪称神器。
安装完成后,在某个类的某个函数中,右键 --> Sequence Diagaram 即可调出。
Stream 非常好用,可以灵活对数据进行操作,但是对很多刚接触的人来说,不好理解。
那么 Java Stream Debugger 这款神器的 IDEA 就可以帮到你。它可以将 Stream 的操作步骤可视化,非常有助于我们的学习。
下面是刚刚介绍的这些插件的名字。
AlibabaCloudToolkit
Git Flow
PlantUML
Rainbow Brackets
Alibaba Java Coding Guidelines
翻译插件
mybatis 插件
IntelliJ Lombok plugin
GenAllSetter
GenDaoCode
CodeGlance
RestfulToolkit
Grep Console
MyBatis Log Plugin
GsonFormat
VisualVm Launcher
jclasslib bytecode viewer
Codota
Auto filling Java call arguments
Rainbow Brackets
SequenceDiagram
Java Stream Debugger
Ace Jump
6. 好看字体
最近JetBrains公司推出了一款优雅美观的字体:JetBrainsMono。
对比之前一直在使用 Consolas
字体
官网下载:https://www.jetbrains.com/lp/mono/
坚果云下载:jianguoyun.com/p/DRPh-GkQ_7eJCBiv2uMC
Windows 安装
下载后,解压文件
直接双击扩展名为 tff
后缀的文件
重启 IDEA
Perferences/Setting -> Editor -> Font
,选择 JetBrains Mono 确认即可
7. 版本控制
这里主要盘点一下在 IDEA 中进行版本控制时,大部分人没注意到的一些细节吧,主要包括下面这写。
查看每一行代码的条件人, 提交时间(大部分人不知道)
克隆远程代码
拉取远程代码
将暂存区代码提交到本地库
将本地库 提交到远程库
切换分支, 或拉取远程分支
查看当前打开类 历史记录
Stash
Check Out
查看每一行代码的条件人, 提交时间(大部分人不知道)
选择后入下图所示
鼠标移动上去还能看到提交详细信息
克隆远程代码
git clone origin url
常规操作
装逼操作
拉取远程代码
git pull
快捷方式
ctrl + t
将暂存区代码提交到本地库
git commit -m 'message'
将本地库 提交到远程库
git push
快捷键
ctrl + shif 或 alt + 1 + 8
切换分支, 或拉取远程分支
以下提供几种快捷方式
ctrl + shift + ` 或 alt + ~ + 7 或
查看当前打开类 历史记录
alt + ~ + 4
查看项目工程历史记录
选中工程后
alt + ~ + 4
或 alt + 9
切换到 Version Control
面板 选择log
Stash
应用场景
我在本地修改好后,发现远程分支已经被改动了,此时我本地也被改动了就造成了冲突,无法push或者pull。此时可以使用git stash
git stash //把本地的改动暂存起来
git pull //拉取远端分支(此时本地分支会回滚到上次commit的情况,新的改动都存在了stash中)
git stash pop // 将栈顶改动重新加回本地分支,就可以继续修改了,当然,如果改好了就是add,commit,push啥的。。
不小心改动了其他分支,例如忘记切换,直接在master分支上做改动,这里假设我的分支是test分支
git stash //把本地当前改动暂存起来,此时master分支就恢复到了上次拉取时的状态
git checkout test //切换到需要改动的分支
git stash pop //将改动pop到自己当前的分支
Idea 将现在本地的修改存储在 Stash 中alt + ~
加 9
将 Stash 中的代码还原
将本地修改的代码还原对应命令 git checkout
8. Terminal 配置
将 Idea 的 Terminal 改为 Git Bash。使用体验翻倍
以前用着这么恶心的 CMD Terminal 我居然没有想法去修改。设置看图
投稿作者:胡川港
知乎主页:zhihu.com/people/hu-chuan-gang-58
GitHub主页:https://github.com/xiaoxiunique
推荐阅读
0. 逛逛GitHub交流群限时加入
1. 一个基于 Spring Boot 开源的小说网站
2. 干掉马赛克!
3. 抓包神器!
4. 你用过这款软件吗?