diff --git a/IntelliJ-IDEA-cache.md b/IntelliJ-IDEA-cache.md
new file mode 100644
index 00000000..a1130373
--- /dev/null
+++ b/IntelliJ-IDEA-cache.md
@@ -0,0 +1,30 @@
+# IntelliJ IDEA 缓存和索引介绍和清理方法
+
+## 缓存和索引介绍
+
+在第十讲的时候已经点到了 IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比,我也简单强调了 IntelliJ IDEA 索引的重要性。这里我们再对此进行详细说明索引、缓存对 IntelliJ IDEA 的重要性。
+
+通过第十一讲,你已经认识到 IntelliJ IDEA 下各个文件类型的图标是什么样子的。其中有一个图标我是专门进行了讲解:![Java class located out of the source root](images/xi-a-file-symbols-3.png) `Java class located out of the source root`。我们也都知道该图标是表示 Java 类文件没有在 `Source root` 目录下的文件夹下会显示此图标,但是其实还有一种情况也是会显示此图标的。那就是:在 IntelliJ IDEA 创建索引过程中,所有的 Java类 都是这个图标,如果你项目大的话很容易观察到的,几个文件的小项目倒是不一定会看到。所以在 IntelliJ IDEA 创建索引过程即使你编辑了代码也是编译不了、运行不起来的,所以还是安安静静等 IntelliJ IDEA 创建索引完成。
+
+IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度,所以 IntelliJ IDEA 的索引的重要性我再唠叨一万遍都不为过。但是,IntelliJ IDEA 的索引和缓存并不是一直会良好地支持 IntelliJ IDEA 的,这某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,基本上百分八十的可能 IntelliJ IDEA 都会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。也有一些即使没有断电、蓝屏,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出问题,这种情况还不少。遇到此类问题也不用过多担心。,下面就来讲解如何解决。
+
+## 清除缓存和索引
+
+![清除缓存和索引](images/xii-a-invalidate-cache-1.jpg)
+
+> * IntelliJ IDEA 已经自带提供清除缓存、索引的路口,如上图标注 1 所示。
+
+![清除缓存和索引](images/xii-a-invalidate-cache-2.jpg)
+
+> * 一般建议点击 `Invalidate and Restart`,这样会比较干净。
+> * 但是有一个需要提醒的是,如上图红圈标注的地方:清除索引和缓存会使得 IntelliJ IDEA 的 `Local History` 丢失,所以如果你项目没有加入到版本控制,而你又需要你项目文件的历史更改记录,那你最好备份下你的 `LocalHistory` 目录。目录地址在:`C:\Users\当前登录的系统用户名\.IntelliJIdea14\system\LocalHistory` 建议使用硬盘的全文搜索,这样效率更高。
+
+通过上面方式清除缓存、索引本质也就是去删除 C 盘下的 `system` 目录下的对应的文件而已,所以如果你不用上述方法也可以删除整个 `system`。当 IntelliJ IDEA 再次启动项目的时候会重新创建新的 `system` 目录以及对应项目缓存和索引。
+
+如果你遇到了因为索引、缓存坏了以至于项目打不开,那也建议你可以直接删除 `system` 目录,一般这样都可以很好地解决你的问题。
+
+## 其他
+
+![其他](images/xii-a-invalidate-cache-3.jpg)
+
+> * 目前我电脑的 IntelliJ IDEA 是新装的,也就打开了几个小项目,所有打开的项目大小加起来不到 5 M,但是他们创建的索引大家就已经上百兆了,如上图所示。所以如果你 C 盘空间不足的情况下,最好转移下 `system` 目录,方法可以根据第八讲讲解的方法进行。
diff --git a/TOC.md b/TOC.md
index 842c8347..6134c59a 100644
--- a/TOC.md
+++ b/TOC.md
@@ -1,4 +1,20 @@
-- 关于我们
- - [关于极客学院](about-us.md)
- - [关于极客学院 Wiki](about-wiki.md)
-- [联系我们](contact.md)
+- [IntelliJ IDEA 介绍](introduce.md)
+- [本教程介绍](about-this-tutorial.md)
+- [Windows 下安装](windows-install.md)
+- [安装总结](install-summarize.md)
+- [首次运行](first-run-wizard.md)
+- [安装目录讲解](installation-directory-introduce.md)
+- [界面讲解](interface-introduce.md)
+- [主题字体和文件编码修改](theme-settings.md)
+- [各类文件类型图标讲解](file-symbols-introduce.md)
+- [索引的讲解](IntelliJ-IDEA-cache.md)
+- [编译方式讲解](make-introduce.md)
+- [项目相关概念讲解](project-composition-introduce.md)
+- [Hello World 项目创建和项目配置文件讲解](project-settings.md)
+- [版本控制讲解](vcs-introduce.md)
+- [实时代码模板讲解](live-templates-introduce.md)
+- [文件代码模板讲解](file-templates-introduce.md)
+- [Emmet 讲解](emmet-introduce.md)
+- [插件讲解](plugins-settings.md)
+- [Eclipse 的 Java Web 项目环境搭建](eclipse-java-web-project-introduce.md)
+- [IntelliJ IDEA 常用快捷键讲解](keymap-introduce.md)
diff --git a/about-this-tutorial.md b/about-this-tutorial.md
new file mode 100644
index 00000000..ed0ea4fe
--- /dev/null
+++ b/about-this-tutorial.md
@@ -0,0 +1,44 @@
+# 关于
+
+## 学习前提
+
+由于 IntelliJ IDEA 官网在亚洲没有设服务器,且官网用到一些类似 Twitter、Facebook 等站的脚本会使得你在国内出现访问巨慢或是不允许访问的特殊情况,所以建议你在访问官网、访问插件库、小版本本地迭代更新等操作的时候出现奇怪问题的时候,请自备VPN等网络加速工具。
+
+很多用户都是先学习了 Eclipse、MyEclipse 再转到 IntelliJ IDEA 的,这里需要先说明的是,在学习 IntelliJ IDEA 过程中,你暂且要放下 Eclipse 下的开发思维方式,不能按 Eclipse 的软件思想或是结构去要求 IntelliJ IDEA,这样对你学习 IntelliJ IDEA 非常不利。
+
+## 适用人群
+
+用 IntelliJ IDEA 进行开发语言的学习者。
+
+用 IntelliJ IDEA 进行开发语言的开发工作者。
+
+其中对于语言开发学习者我是非常建议你使用 IntelliJ IDEA,因为一些代码格式、命名规范在 IntelliJ IDEA 下都是有良好的提示,对于我们所处的输入法下的中文全角符号也可以得到快速发现。特别是学习 Python 的学习者,当你在用 Pycharm 进行学习的时候,Pycharm 会时刻告诉你什么时候要注意空格、换行,提醒你有 PEP8 编码规范,你也可以通过快捷键快速格式化出适合 Python 要求的代码,这对于学习者来讲,真的很重要,它可以让你更专注于自己的代码。
+
+## 教程演示的 IntelliJ IDEA 版本
+
+IntelliJ IDEA 13 版本和 14 版本,在设置上差异很大,14 版本 IntelliJ IDEA 对整个 IDE 的设置进行了重新编排、归类,但是细节设置上所沿用的介绍是没有多大改变的。
+
+目前(2015 年 06 月)IntelliJ IDEA 官网最新版本信息为:**Version:14.1.4 Build:141.1532.4 Released:June 19th, 2015**。
+
+IntelliJ IDEA 有旗舰版和社区版本之分,本系列教程将以 `14.1.4` 的旗舰版进行演示和讲解。
+
+其中旗舰版(Ultimate Edition)为收费版本,有 30 天试用期。如果你是学生、老师、开源项目参与者都可以向官网免费试用旗舰版,具体你可以查看下面链接。社区版(Community Edition)为免费版本,功能较旗舰版少了很多。
+
+本教程使用的 IntelliJ IDEA 主题为较受欢迎的黑色:**Darcula**。
+
+> * 申请免费版本:
+> * 旗舰版和社区版差异细节:
+
+## 教程演示的系统环境
+
+> * 系统:Windows 8.1 64 位 简体中文版
+> * JDK 版本:1.8.0_05 64 位
+> * 建议使用 JDK 版本为:1.6 及 1.6 以上,更加详细的系统要求会在安装教程篇中进行讲解。
+
+## IntelliJ IDEA 版本迭代习惯
+
+2015 年 IntelliJ IDEA 主版本是 14,目前(2015 年 06 月)最新版本是 14.1.4。与此同时,2015 年 06 月 17 日,官网开始提供 15 EAP 版本(Early Access Program 早期预览版)。如果你对 IntelliJ IDEA 下个大版本的新特性很感兴趣,你可以随时关注官网博客最新动态。
+
+按正常情况来讲,IntelliJ IDEA 大版本是一年迭代一次。大版本下的小版本迭代时间没有固定,快的是一个月不到就迭代一次,慢的话基本在两到三个月迭代一次。相对其他 IDE 来讲迭代周期还是比较紧凑,但是作为用户你不用担心因为频繁迭代更新而引起的项目配置问题或是软件配置问题,后面有课程会专门对此进行说明。
+
+> * IntelliJ IDEA 官网博客:
\ No newline at end of file
diff --git a/eclipse-java-web-project-introduce.md b/eclipse-java-web-project-introduce.md
new file mode 100644
index 00000000..86f27d85
--- /dev/null
+++ b/eclipse-java-web-project-introduce.md
@@ -0,0 +1,136 @@
+# Eclipse 的 Java Web 项目环境搭建
+
+## Eclipse 项目结构
+
+![Eclipse 项目结构](images/xxi-a-eclipse-project-introduce-1.gif)
+
+> * 如上图 Gif 演示,在 Eclipse 下,一般中小项目的项目结构基本都是这种模式的,所以我们这里也网络上一个开源项目 JspRun 进行讲解。
+> * 下载地址:<>
+
+## Eclipse 项目配置
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-1.jpg)
+
+> * 如上图箭头所示,在 IntelliJ IDEA 下是支持直接打开 Eclipse 项目的,无需导入。
+> * 如上图标注 1 所示,选择项目的 `.project` 文件打开即可。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-2.jpg)
+
+> * 如上图标注 1 所示,IntelliJ IDEA 能自动识别到可编译的 `src` 类目录,所以这里文件夹是蓝色的。
+> * 如上图标注 2 所示,Java Web 项目 `WebRoot` 是整个项目输出的根目录,所以这个区域也是非常重要的,只是无需配置。
+> * 如上图标注 3 所示,`WEB-INF` 下的一些配置文件,以及两个目录 `classes` 和 `lib` 都是至关重要的,其中 `classes` 是红色目录,也就是被排除的,因为编译的文件对开发来讲是没有多大意义的,所以进行了排除。但是这并不会影响容器去使用它。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-3.jpg)
+
+> * 如上图标注 1 所示,因为这个项目是单 Module 的,所以我们这里在 `Project compiler output` 可以选择项目 `WEB-INF` 下的 `classes` 编译目录。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-4.jpg)
+
+> * 如上图红圈所示,我们可以根据对项目的任意目录进行这五种目录类型标注,这个知识点非常非常重要,必须会。
+>> * `Sources` 一般用于标注类似 `src` 这种可编译目录。有时候我们不单单项目的 `src` 目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目录进行此标注。只有 `Sources` 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。
+>> * `Tests` 一般用于标注可编译的单元测试目录。在规范的 maven 项目结构中,顶级目录是 `src`,maven 的 `src` 我们是不会设置为 `Sources` 的,而是在其子目录 `main` 目录下的 `java` 目录,我们会设置为 `Sources`。而单元测试的目录是 `src - test - java`,这里的 `java` 目录我们就会设置为 `Tests`,表示该目录是作为可编译的单元测试目录。一般这个和后面几个我们都是在 maven 项目下进行配置的,但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA 对 maven 项目的支持是比彻底的。
+>> * `Resources` 一般用于标注资源文件目录。在 maven 项目下,资源目录是单独划分出来的,其目录为:`src - main -resources`,这里的 `resources` 目录我们就会设置为 `Resources`,表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。
+>> * `Test Resources` 一般用于标注单元测试的资源文件目录。在 maven 项目下,单元测试的资源目录是单独划分出来的,其目录为:`src - test -resources`,这里的 `resources` 目录我们就会设置为 `Test Resources`,表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。
+>> * `Excluded` 一般用于标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引,相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。
+>> * 通过上面的介绍,我们知道对于非 maven 项目我们只要会设置 `src` 即可。
+
+> * 如上图箭头所示,被标注的目录会在右侧有一个总的概括。其中 `classes` 虽然是 `Excluded` 目录,但是它有特殊性,可以不显示在这里。
+> * 如上图标注 1 所示,如果要去掉目录的标记含义,可以点击打叉按钮进行删除。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-5.jpg)
+
+> * 如上图标注 1 所示,这是一个单 Module 的项目,Module 的编译输出目录可以跟 Project 的项目输出目录一致,都是 `WebRoot` 下的 `classes` 目录。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-6.jpg)
+
+> * 如上图红圈所示,这里显示项目的所有依赖包,其中红色表示 IntelliJ IDEA 无法识别。IntelliJ IDEA 支持一个一个导入依赖包,也支持直接导入一个目录下的所有依赖包。上图的这种就是一个一个具体化的依赖包,除非个表包有存在依赖顺序关系,不然不建议一个一个引入,这样比较麻烦。所以我这里会先把这些零散的依赖包全部去除掉,然后按目录来引入。
+> * 如上图标注 1 所示,依赖包支持这五种操作。
+>> * 加号,表示可以引入新依赖包。
+>> * 减号,表示可以去除对应的依赖包。
+>> * 向上箭头,表示依赖包可以向上移动位置。依赖包越上面的表示在项目加载的时候越是优先,所以对于同一个依赖包,不同版本,依赖顺序不同,结果可能也是很有会不同的。
+>> * 向下箭头,表示依赖包可以向下移动位置,原因同上。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-7.jpg)
+
+> * 如上图所示,引入依赖包支持 `jar` 包和目录。以及已经导入项目的 `Libraries` 中的依赖包。多 Module 的项目还可以依赖其他 Module。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-8.gif)
+
+> * 由于我们刚刚去掉了红圈中的所有依赖包,所以我们现在还需要导入依赖包。到导入之前我们先把项目的 `lib` 作为一个总的依赖包进行放置到项目 `Libraries` 中。如上图 Gif 演示,就是把 `lib` 目录转换成一个依赖包。这样的好处是,当我们项目有新添加依赖包,我们只要放置在 `lib` 目录下即可自动被项目引入,原因就是因为我们这里引的是目录,而不是一个一个依赖包。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-9.jpg)
+
+> * 如上图标注 1 所示,引入刚刚放置好的 `Libraries` 下 `lib` 依赖包。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-10.gif)
+
+> * 对于传统的 Java Web 项目,我们一般还需要指定配置 web.xml 位置。如上图 Gif 演示,这个一般在 `Facts` 中进行配置。`Facts` 可以理解为用于配置项目的框架区,在这里管理项目使用的框架配置文件。这个是 IntelliJ IDEA 特有的一个配置点。
+> * 除了 web.xml 一般我们要配置外,其他一些框架,即使我们不在这里配置也是不会影响项目的运行的,但是是有缺点的。比如我们项目中一般都是有 Spring 框架的,而 Spring 是有很多配置文件的,如果我们在这里进行了配置,那你会发现 IntelliJ IDEA 编辑区底部会多出现几个跟 Spring 项目的设置区,原因就是你告诉了 IntelliJ IDEA,你的项目使用了 Spring 框架,那 IntelliJ IDEA 就会出现其对应的配置功能给你。Hibernate 等其他框架道理一样。
+
+![Eclipse 项目配置](images/xxi-b-eclipse-project-settings-11.gif)
+
+> * `Artifacts` 也是 IntelliJ IDEA 特有的一个概念,我们可以理解这里是配置项目最终输出结果的地方。比如 Java Web 项目我们一般必备一个配置就是要配置成一个 war 包展开的方式,这样容器才能运行该项目。上图 Gif 演示的就是配置一个 war 包展开的输出结构。其结构是由于前面的几项配置决定,所以如果前面的 Module 配置没有多大问题,这里可以省去一些配置步骤。但是有些时候我们也是需要做一些修改,比如此项目的输出目录默认生成的是错误,我改为了项目中的 `webRoot` 目录。
+> * 该 `Artifacts` 配置,等下在配置 Tomcat 的时候也会引用到,所以这里需要重点注意下。
+
+## Tomcat 配置
+
+![Tomcat 配置](images/xxi-c-eclipse-project-tomcat-settings-1.gif)
+
+> * 如上图 Gif 所示,为项目整体的一个 Tomcat 配置过程,有些需要特别讲解的,我们将在下面进行分解。
+
+![Tomcat 配置](images/xxi-c-eclipse-project-tomcat-settings-2.jpg)
+
+> * 如上图弹出层所示,IntelliJ IDEA 支持目前市场上主流的应用容器,所以基本上一个 IntelliJ IDEA 足够我们开发常见的项目。但是这里有一点需要提醒的,IntelliJ IDEA 支持这些容器但是不等同于帮我们自带了这些容器的文件,所以上面的 Gif 演示中,原本我只有引入 Tomcat 7,但是为了这个项目我又引入了 Tomcat 6,而引入的 Tomcat 6 我只是指定了其存放的目录位置 IntelliJ IDEA 自动会识别到。
+
+![Tomcat 配置](images/xxi-c-eclipse-project-tomcat-settings-3.jpg)
+
+> * 如上图标注 1 所示,我们可以切换随时为项目切换不同的容器。
+> * 如上图标注 2 所示,我们可以指定给运行的容器设置 VM 参数。
+> * 如上图标注 3 所示,这分别是在两种命令下的触发的事件。这个是 IntelliJ IDEA 特有的,也是重点。
+>> * `On Update action` 当我们按 `Ctrl + F10` 进行容器更新的时候,可以根据我们配置的这个事件内容进行容器更新。其中我选择的 `Update classes and resources` 事件是最常用的,表示我们在按 `Ctrl + F10` 进行容器更新的时候,我们触发更新编译的类和资源文件到容器中。在 Debug 模式下,这个也就是所谓的 `HotSwap`。这是这种热部署没有 JRebel 插件那样好用。
+>> * `On frame deactivation` 当我们切换 IntelliJ IDEA 到浏览器的时候进行指定事件更新,这个一般是因为 Web 开发的时候,我们需要经常在 IntelliJ IDEA 和各个浏览器之间来回切换测试,所以才有了这种需求。IntelliJ IDEA 是为了帮我们在做这种无聊切换的时候做一些指定事情。当然了,如果切换过于频繁,这个功能还是很耗资源的,所以我设置的是 `Do nothing` 表示切换的时候什么都不做。
+> * 如上图标注 4 所示,默认 Tomcat 的 HTTP 端口是 8080,如果你需要改其端口可以在这里设置。
+> * 如上图标注 5 所示,这个知识点在前面的文章已经有讲过了。这里表示在 Tomcat 容器运行前做什么事情,这里分别了:Make 和 Build Artifacts 操作。如上面 Gif 演示,这里的 `Build Artifacts` 是我们在 `Deployment` 选项卡中添加了 Artifact 之后自动出现的。
+
+## Tomcat 启动
+
+> * 通过上面的配置,IntelliJ IDEA 环境配置算是配置好了,现在配置下该项目相关的。
+> * 打开你的 Mysql,执行下面脚本,创建一个新的数据库和用户:
+```sql
+CREATE DATABASE `jsprun` CHARACTER SET utf8;
+CREATE USER 'jsprun'@'localhost' IDENTIFIED BY 'jsprun';
+GRANT ALL PRIVILEGES ON jsprun.* TO 'jsprun'@'localhost';
+FLUSH PRIVILEGES;
+```
+> * 切换到上面新建的 `jsprun` 数据库中执行项目中这个数据脚本,文件位置:`JspRun\WebRoot\install\jsprun_zh_CN.sql`。
+> * 修改 `JspRun\WebRoot\config.properties` 文件中的几个属性为下面内容:
+>> * `dbuser = jsprun`
+>> * `dbpw = jsprun`
+
+![Tomcat 启动](images/xxi-d-eclipse-project-tomcat-run-1.gif)
+
+> * 如上图 Gif 演示,我们缺少引入 Tomcat 的依赖包。
+
+![Tomcat 启动](images/xxi-d-eclipse-project-tomcat-run-2.gif)
+
+> * 如上图 Gif 演示,我们引入 Tomcat 的依赖包之后,可以运行该项目。
+
+![Tomcat 启动](images/xxi-d-eclipse-project-tomcat-run-3.jpg)
+
+> * 如上图所示,为最终项目运行效果图。
+
+## Tomcat 停止
+
+![Tomcat 停止](images/xxi-e-eclipse-project-tomcat-stop-1.gif)
+
+> * 如上图所示,停止按钮是要按两次,第一按完出现一个骷髅头并不是停止,需要再点击一次。
+> * 有时候即使点了两次,Tomcat 容器也不一定能完全停掉,这时候很容易出现端口被占用的操作,这时候你需要打开系统的资源管理器,手动 kill 系统上所有的 java 进程。
+
+## 输出 war 压缩包
+
+![Tomcat 输出 war 包](images/xxi-e-eclipse-project-output-war-1.gif)
+
+> * 如上图 Gif 所示,除了在 Artifacts 中需要配置,还需要在容器中也跟着配置,这样在启动容器的时候才会输出一个 war 压缩包。
+> * 通过配置,我们也知道 war 的压缩包本质是根据展开的 war 输出包进行压缩的得来。
+
+
diff --git a/emmet-introduce.md b/emmet-introduce.md
new file mode 100644
index 00000000..0c069268
--- /dev/null
+++ b/emmet-introduce.md
@@ -0,0 +1,33 @@
+# Emmet 的使用
+
+## Emmet 的介绍
+
+Emmet 的前身叫做:Zen Coding,也许熟知旧名的人不在少数。Emmet 一般前端工程师用得比较多,具体它是做什么的,我们通过下面两张 Gif 演示图来说明:
+
+![Emmet 的介绍](images/xix-a-emmet-introduce-1.gif)
+
+![Emmet 的介绍](images/xix-a-emmet-introduce-2.gif)
+
+> * IntelliJ IDEA 自带 Emmet 功能,使用的快捷键是 `Tab`。
+
+Emmet 资料介绍:
+
+> * Emmet 官网:
+> * Emmet 官网文档:
+> * Emmet 速查表:
+> * Emmet 项目主页:
+
+
+## Emmet 的设置
+
+![Emmet 的设置](images/xix-b-emmet-settings-1.jpg)
+
+> * 如上图标注 1 所示,IntelliJ IDEA 支持主流四个浏览器内核的一些特别 CSS 书写。
+> * 如上图标注 2 所示,可以增加或是删除某些属性。
+> * 具体使用,如下图 Gif 演示。
+
+![Emmet 的设置](images/xix-b-emmet-settings-2.gif)
+
+![Emmet 的设置](images/xix-b-emmet-settings-3.jpg)
+
+> * 如上图标注红圈所示,在 `Live Templates` 中也有预设三套代码模板。
\ No newline at end of file
diff --git a/file-symbols-introduce.md b/file-symbols-introduce.md
new file mode 100644
index 00000000..5742b9b8
--- /dev/null
+++ b/file-symbols-introduce.md
@@ -0,0 +1,20 @@
+# 常见文件类型的图标介绍
+
+## Java 类相关图标介绍
+
+![Java 类相关图标介绍](images/xi-a-file-symbols-1.jpg)
+
+> * 官网地址:
+> * 对于各个图标,上图的 `Description` 写得非常详细,但是有几个还是需要进行特别的说明下。
+>> * ![Source root](images/xi-a-file-symbols-2.gif) `Source root`,你可以理解为源目录,源码的作用就是用来专门放 Java 类文件,相对于编译出来的 class 文件而言,它就是源。我们一般默认名字叫 `src` 的目录就是源目录,但是其实并不是这样的,在 IntelliJ IDEA 中,即使叫 `srcs` 也是可以设置为 `Source root`,所以源目录跟目录命名是没有关系的,而是在于 IntelliJ IDEA 支持对任意目录进行设置为 `Source root`,具体设置在会后面章节进行详解。 `Source root` 的作用是标记该目录下的文件是可编译的。
+>> * ![Java class located out of the source root](images/xi-a-file-symbols-3.png) `Java class located out of the source root`,由于上一条我们知道 `Source root` 目录是用来告诉 IntelliJ IDEA 这是编译目录,而假如你 Java 类文件没有放在该目录或是该目录的子包下,那该 Java 类则无法编译,就会被表示成这个图标。
+
+## 各类文件类型图标介绍
+
+![各类文件类型图标介绍](images/xi-b-file-symbols-1.jpg)
+
+> * 官网地址:
+> * 对于各个图标,上图的介绍得非常清楚,我这边只做一个类型文件的补充。
+>> * ![JavaScript 两种图标介绍](images/xi-b-file-symbols-2.png)
+>> * 如上图所示,对于压缩过的 JavaScript 文件,图标会有 `010`图案。
+
diff --git a/file-templates-introduce.md b/file-templates-introduce.md
new file mode 100644
index 00000000..d37ea24f
--- /dev/null
+++ b/file-templates-introduce.md
@@ -0,0 +1,77 @@
+# 文件代码模板的使用
+
+## 文件代码模板的介绍
+
+文件代码模板可以简单理解为:我们在项目中创建某些类型文件时,就已经在对应这些新文件中预设了代码内容。因为文字表达都带有点无力,所以下面用 Gif 动态图来演示。
+
+![文件代码模板的介绍](images/xviii-a-file-and-code-templates-introduce-1.gif)
+
+> * 如上图 Gif 所示,IntelliJ IDEA 默认新建类自带的类注释格式一般不够友好或是规范,所以我们一般需要自己根据公司编码规范进行设置。
+
+![文件代码模板的介绍](images/xviii-a-file-and-code-templates-introduce-2.gif)
+
+> * 如上图 Gif 所示,这是根据我自己的需求进行设置的类注释,这种注释方式会更友好。
+
+根据演示我们应该已经很好地理解了文件代码模板是什么东西了。对此我们可以衍生出很多玩法,比如:我们的项目 Controller、Service、Dao 等常用新对象都是要各自继承某个类、实现某些接口或预设某些方法,也都可以通过这样的文件代码模板来实现。
+
+> * 官网介绍:
+
+## 文件代码模板的设置
+
+![文件代码模板的设置](images/xviii-b-file-and-code-templates-settings-1.jpg)
+
+> * 如上图标注 1 所示,文件代码模板支持的类型基本常见的文件类型都涵盖了。
+> * 如上图标注 2 所示,这是 Java 文件模板新建的代码模板,其中 `${PACKAGE_NAME}、${NAME}` 是 IntelliJ IDEA 预设的变量。
+> * 如上图标注 3 所示,IntelliJ IDEA 的文件代码模板是可以使用 `Velocity Template Language` (VTL) 进行书写的。如图 2 上的 `#if ... #end` 和 `#parse` 都是 VTL 的语法。
+> * 如上图标注 4 所示,介绍当前文件模板的一些信息,以及一些预设变量的作用介绍。
+> * 如上图标注 5 所示,这四个按钮是文件代码模板的主要操作按钮,四个操作分别是:
+>> * `Create Template` 创建一个文件代码模板。
+>> * `Remove Template` 删除一个文件代码模板,标注 1 所示的这些预设模板是不允许删除的,只能能删除预设之外的新增的。
+>> * `Copy Template` 复制一个文件代码模板。
+>> * `Reset To Default` 对被修改的预设文件代码模板,还原到默认状态。
+
+![文件代码模板的设置](images/xviii-b-file-and-code-templates-settings-2.jpg)
+
+> * 如上图标注 1 所示,IntelliJ IDEA 还支持其他常见会新建的文件类型,基本上我们根本不用担心有不支持的文件类型,常用的基本都被涵盖了。
+
+![文件代码模板的设置](images/xviii-b-file-and-code-templates-settings-3.jpg)
+
+> * 如上图标注 1 所示,该 `File Header` 文件就是前面 Java 文件代码模板中引入语句中 `#parse("File Header.java")` 文件。
+
+![文件代码模板的设置](images/xviii-b-file-and-code-templates-settings-4.jpg)
+
+> * 如上图标注箭头所示,`${DESCRIPTION}` 是我们自己定义的变量,自定义变量格式有两种方式:`$变量名 或 ${变量名}`。
+> * 自定义的变量在创建对应的文件时候就必须输入内容,这个在本文最上面的 Gif 演示中已经有体现了。
+
+![文件代码模板的设置](images/xviii-b-file-and-code-templates-settings-5.gif)
+
+> * 如上图 Gif 所示,当我们需要用到一个固定值的自定义变量的时候并且该变量多个地方被引用,我们可以通过 VTL 语法的 `#set( $变量名 = "变量值内容" );` 来设置。
+
+![文件代码模板的设置](images/xviii-b-file-and-code-templates-settings-6.jpg)
+
+> * 因为 `Code` 模块改动的人不多,所以放在最后。我们是无法新建、删除 `Code` 里面的代码模板。
+> * 如上图标注 1 所示,在我们通过快捷方式生成某个类的测试方法时候会自动调用此 `Code` 模板,所以我们可以解释该 `Code` 功能主要用在 IntelliJ IDEA 自动帮我们生成某些代码的时候引用的模板。
+
+## 文件代码模板预设的变量
+
+因为变量的命名太明了不过了,所以这里不多讲解,直接贴出官网的英文解释:
+
+> * ${PACKAGE_NAME} - the name of the target package where the new class or interface will be created.
+> * ${PROJECT_NAME} - the name of the current project.
+> * ${FILE_NAME} - the name of the PHP file that will be created.
+> * ${NAME} - the name of the new file which you specify in the New File dialog box during the file creation.
+> * ${USER} - the login name of the current user.
+> * ${DATE} - the current system date.
+> * ${TIME} - the current system time.
+> * ${YEAR} - the current year.
+> * ${MONTH} - the current month.
+> * ${DAY} - the current day of the month.
+> * ${HOUR} - the current hour.
+> * ${MINUTE} - the current minute.
+> * ${PRODUCT_NAME} - the name of the IDE in which the file will be created.
+> * ${MONTH_NAME_SHORT} - the first 3 letters of the month name. Example: Jan, Feb, etc.
+> * ${MONTH_NAME_FULL} - full name of a month. Example: January, February, etc.
+
+PHP 的文件类型预设的变量比上面的还多一点,具体可以查阅官网:
+
+> * 官网变量介绍:
diff --git a/first-run-wizard.md b/first-run-wizard.md
new file mode 100644
index 00000000..91c03e98
--- /dev/null
+++ b/first-run-wizard.md
@@ -0,0 +1,37 @@
+# 首次运行
+
+## 向导功能
+
+> * 假如你计算机上在过去已经有安装过 IntelliJ IDEA 14 的版本,且你在卸载 IntelliJ IDEA 的过程中,IntelliJ IDEA 的配置文件目录都没有删除,那安装新版本之后是不会有首次运行的功能向导的。
+> * 假如你计算机上没有安装过 IntelliJ IDEA,或是 卸载 IntelliJ IDEA 过程中你删除了 IntelliJ IDEA 的配置文件目录,则当你双击运行桌面上的 IntelliJ IDEA 快捷图标,将进入下面介绍的向导过程。
+
+![向导步骤截图](images/vii-a-first-run-wizard-1.jpg)
+
+> * 上图第一个单选按钮表示 IntelliJ IDEA 识别到我计算机上有 IntelliJ IDEA 13 版本的旧配置,如果我选择了该选项,则 IntelliJ IDEA 将自动把旧版本的配置文件转移到新版本的配置文件目录上。如果你计算机上首次安装一般是没有该选项的。
+> * 上图第二个单选按钮表示你可以指定 IntelliJ IDEA 导入你计算机上存在其他目录的 IntelliJ IDEA 配置文件目录,如果你有的话。
+> * 上图第三个单选按钮表示你没有任何早期版本的 IntelliJ IDEA 配置,你不导入任何配置,让 IntelliJ IDEA 生成一份新的配置。
+
+![向导步骤截图](images/vii-a-first-run-wizard-2.jpg)
+
+> * 上图默认选择中的是 `Buy IntelliJ IDEA`,验证 IntelliJ IDEA 的许可有如图三种方式,我们这里使用的是 30 天试用版本进行演示,顾单击 `Evaluate for free for 30 days` 进行下一步。
+
+![向导步骤截图](images/vii-a-first-run-wizard-3.jpg)
+
+![向导步骤截图](images/vii-a-first-run-wizard-4.jpg)
+
+> * 上图选择的时候 IntelliJ IDEA 主题 UI,在 Windows 系统版本中 IntelliJ IDEA 自带了 4 个主题,但是用的最多的就是上图这 2 种,其中大家基本偏爱黑色的 `Darcula`。这个没有好坏之分,根据你的喜好来进行选择,我们演示的版本就是用 `Darcula`。
+
+![向导步骤截图](images/vii-a-first-run-wizard-5.jpg)
+
+> * 上图显示了 IntelliJ IDEA 支持的主要的一些扩展功能或者说是工具、插件也可以。你可以根据自己开发的需求进行禁用一些扩展,这样可以稍微减轻 IntelliJ IDEA 运行时所占内存,加快运行速度,但是效果并不会很明显就是。
+> * 我们这里点击 `Java Frameworks` 的 `Customize` 进行下一步操作。
+
+![向导步骤截图](images/vii-a-first-run-wizard-6.jpg)
+
+> * 上图显示了 IntelliJ IDEA 所以支持的 `Java Frameworks`。我们可以根据自己的开发需求不启用指定框架的。去掉框架前面的勾选框就表示不启用该框架功能支持。
+> * 对于不启用的框架,我们也可以在后期进行重新勾选,这会在 IntelliJ IDEA 插件那一讲进行专门讲解。
+
+![向导步骤截图](images/vii-a-first-run-wizard-7.jpg)
+
+> * 选择好自己所需的扩展功能后,按 `Start using IntelliJ IDEA` 显示上图启动界面,金黄色进度条走完之后,欢迎真正进入 IntelliJ IDEA 的编码世界!
+
diff --git a/images/iii-a-first-install-1.jpg b/images/iii-a-first-install-1.jpg
new file mode 100644
index 00000000..3fb9db41
Binary files /dev/null and b/images/iii-a-first-install-1.jpg differ
diff --git a/images/iii-a-first-install-2.jpg b/images/iii-a-first-install-2.jpg
new file mode 100644
index 00000000..ca6d2568
Binary files /dev/null and b/images/iii-a-first-install-2.jpg differ
diff --git a/images/iii-a-first-install-3.jpg b/images/iii-a-first-install-3.jpg
new file mode 100644
index 00000000..f21c90d3
Binary files /dev/null and b/images/iii-a-first-install-3.jpg differ
diff --git a/images/iii-a-first-install-4.jpg b/images/iii-a-first-install-4.jpg
new file mode 100644
index 00000000..76501266
Binary files /dev/null and b/images/iii-a-first-install-4.jpg differ
diff --git a/images/iii-a-first-install-5.jpg b/images/iii-a-first-install-5.jpg
new file mode 100644
index 00000000..4878d463
Binary files /dev/null and b/images/iii-a-first-install-5.jpg differ
diff --git a/images/iii-a-first-install-6.jpg b/images/iii-a-first-install-6.jpg
new file mode 100644
index 00000000..6ffe4aa2
Binary files /dev/null and b/images/iii-a-first-install-6.jpg differ
diff --git a/images/iii-a-first-install-7.jpg b/images/iii-a-first-install-7.jpg
new file mode 100644
index 00000000..1fbe18ca
Binary files /dev/null and b/images/iii-a-first-install-7.jpg differ
diff --git a/images/iii-b-repeatedly-install-1.jpg b/images/iii-b-repeatedly-install-1.jpg
new file mode 100644
index 00000000..c6164d74
Binary files /dev/null and b/images/iii-b-repeatedly-install-1.jpg differ
diff --git a/images/iii-b-repeatedly-install-2.jpg b/images/iii-b-repeatedly-install-2.jpg
new file mode 100644
index 00000000..c7f90bee
Binary files /dev/null and b/images/iii-b-repeatedly-install-2.jpg differ
diff --git a/images/iii-b-repeatedly-install-3.jpg b/images/iii-b-repeatedly-install-3.jpg
new file mode 100644
index 00000000..48706432
Binary files /dev/null and b/images/iii-b-repeatedly-install-3.jpg differ
diff --git a/images/iii-c-uninstall-1.jpg b/images/iii-c-uninstall-1.jpg
new file mode 100644
index 00000000..3f636680
Binary files /dev/null and b/images/iii-c-uninstall-1.jpg differ
diff --git a/images/iii-c-uninstall-2.jpg b/images/iii-c-uninstall-2.jpg
new file mode 100644
index 00000000..80800d24
Binary files /dev/null and b/images/iii-c-uninstall-2.jpg differ
diff --git a/images/iii-c-uninstall-3.jpg b/images/iii-c-uninstall-3.jpg
new file mode 100644
index 00000000..3cb8e8fa
Binary files /dev/null and b/images/iii-c-uninstall-3.jpg differ
diff --git a/images/ix-interface-introduce-1.jpg b/images/ix-interface-introduce-1.jpg
new file mode 100644
index 00000000..6e816c29
Binary files /dev/null and b/images/ix-interface-introduce-1.jpg differ
diff --git a/images/ix-interface-introduce-2.jpg b/images/ix-interface-introduce-2.jpg
new file mode 100644
index 00000000..b0cb9f13
Binary files /dev/null and b/images/ix-interface-introduce-2.jpg differ
diff --git a/images/ix-interface-introduce-3.jpg b/images/ix-interface-introduce-3.jpg
new file mode 100644
index 00000000..0bad97b6
Binary files /dev/null and b/images/ix-interface-introduce-3.jpg differ
diff --git a/images/ix-interface-introduce-4.jpg b/images/ix-interface-introduce-4.jpg
new file mode 100644
index 00000000..4c961711
Binary files /dev/null and b/images/ix-interface-introduce-4.jpg differ
diff --git a/images/ix-interface-introduce-5.jpg b/images/ix-interface-introduce-5.jpg
new file mode 100644
index 00000000..93132787
Binary files /dev/null and b/images/ix-interface-introduce-5.jpg differ
diff --git a/images/ix-interface-introduce-6.jpg b/images/ix-interface-introduce-6.jpg
new file mode 100644
index 00000000..434056b6
Binary files /dev/null and b/images/ix-interface-introduce-6.jpg differ
diff --git a/images/n-a-keymap-setting-1.jpg b/images/n-a-keymap-setting-1.jpg
new file mode 100644
index 00000000..f4229f7e
Binary files /dev/null and b/images/n-a-keymap-setting-1.jpg differ
diff --git a/images/n-a-keymap-setting-2.jpg b/images/n-a-keymap-setting-2.jpg
new file mode 100644
index 00000000..03ea60a2
Binary files /dev/null and b/images/n-a-keymap-setting-2.jpg differ
diff --git a/images/n-a-keymap-setting-3.jpg b/images/n-a-keymap-setting-3.jpg
new file mode 100644
index 00000000..fc5d8474
Binary files /dev/null and b/images/n-a-keymap-setting-3.jpg differ
diff --git a/images/n-b-ideavim-1.jpg b/images/n-b-ideavim-1.jpg
new file mode 100644
index 00000000..7215579e
Binary files /dev/null and b/images/n-b-ideavim-1.jpg differ
diff --git a/images/vii-a-first-run-wizard-1.jpg b/images/vii-a-first-run-wizard-1.jpg
new file mode 100644
index 00000000..9f58af22
Binary files /dev/null and b/images/vii-a-first-run-wizard-1.jpg differ
diff --git a/images/vii-a-first-run-wizard-2.jpg b/images/vii-a-first-run-wizard-2.jpg
new file mode 100644
index 00000000..8b4919f5
Binary files /dev/null and b/images/vii-a-first-run-wizard-2.jpg differ
diff --git a/images/vii-a-first-run-wizard-3.jpg b/images/vii-a-first-run-wizard-3.jpg
new file mode 100644
index 00000000..8eb49e97
Binary files /dev/null and b/images/vii-a-first-run-wizard-3.jpg differ
diff --git a/images/vii-a-first-run-wizard-4.jpg b/images/vii-a-first-run-wizard-4.jpg
new file mode 100644
index 00000000..c518c067
Binary files /dev/null and b/images/vii-a-first-run-wizard-4.jpg differ
diff --git a/images/vii-a-first-run-wizard-5.jpg b/images/vii-a-first-run-wizard-5.jpg
new file mode 100644
index 00000000..a795d84f
Binary files /dev/null and b/images/vii-a-first-run-wizard-5.jpg differ
diff --git a/images/vii-a-first-run-wizard-6.jpg b/images/vii-a-first-run-wizard-6.jpg
new file mode 100644
index 00000000..02898c84
Binary files /dev/null and b/images/vii-a-first-run-wizard-6.jpg differ
diff --git a/images/vii-a-first-run-wizard-7.jpg b/images/vii-a-first-run-wizard-7.jpg
new file mode 100644
index 00000000..cd2105a0
Binary files /dev/null and b/images/vii-a-first-run-wizard-7.jpg differ
diff --git a/images/viii-a-configuration-files-1.jpg b/images/viii-a-configuration-files-1.jpg
new file mode 100644
index 00000000..ad524436
Binary files /dev/null and b/images/viii-a-configuration-files-1.jpg differ
diff --git a/images/viii-a-configuration-files-2.jpg b/images/viii-a-configuration-files-2.jpg
new file mode 100644
index 00000000..85528d77
Binary files /dev/null and b/images/viii-a-configuration-files-2.jpg differ
diff --git a/images/viii-a-installation-directory-1.jpg b/images/viii-a-installation-directory-1.jpg
new file mode 100644
index 00000000..4ad7b06e
Binary files /dev/null and b/images/viii-a-installation-directory-1.jpg differ
diff --git a/images/viii-a-installation-directory-2.jpg b/images/viii-a-installation-directory-2.jpg
new file mode 100644
index 00000000..91722a9d
Binary files /dev/null and b/images/viii-a-installation-directory-2.jpg differ
diff --git a/images/viii-a-setting-synchronize-1.jpg b/images/viii-a-setting-synchronize-1.jpg
new file mode 100644
index 00000000..56fd1bb2
Binary files /dev/null and b/images/viii-a-setting-synchronize-1.jpg differ
diff --git a/images/x-a-theme-setting-1.jpg b/images/x-a-theme-setting-1.jpg
new file mode 100644
index 00000000..84282472
Binary files /dev/null and b/images/x-a-theme-setting-1.jpg differ
diff --git a/images/x-b-font-setting-1.jpg b/images/x-b-font-setting-1.jpg
new file mode 100644
index 00000000..5cca0e4b
Binary files /dev/null and b/images/x-b-font-setting-1.jpg differ
diff --git a/images/x-b-font-setting-2.jpg b/images/x-b-font-setting-2.jpg
new file mode 100644
index 00000000..0948b608
Binary files /dev/null and b/images/x-b-font-setting-2.jpg differ
diff --git a/images/x-b-font-setting-3.jpg b/images/x-b-font-setting-3.jpg
new file mode 100644
index 00000000..9f3396ad
Binary files /dev/null and b/images/x-b-font-setting-3.jpg differ
diff --git a/images/x-c-code-theme-setting-1.jpg b/images/x-c-code-theme-setting-1.jpg
new file mode 100644
index 00000000..22028120
Binary files /dev/null and b/images/x-c-code-theme-setting-1.jpg differ
diff --git a/images/x-c-code-theme-setting-2.jpg b/images/x-c-code-theme-setting-2.jpg
new file mode 100644
index 00000000..2deeab27
Binary files /dev/null and b/images/x-c-code-theme-setting-2.jpg differ
diff --git a/images/x-d-encoding-setting-1.jpg b/images/x-d-encoding-setting-1.jpg
new file mode 100644
index 00000000..bb8ddbed
Binary files /dev/null and b/images/x-d-encoding-setting-1.jpg differ
diff --git a/images/x-d-encoding-setting-2.gif b/images/x-d-encoding-setting-2.gif
new file mode 100644
index 00000000..0e864a11
Binary files /dev/null and b/images/x-d-encoding-setting-2.gif differ
diff --git a/images/xi-a-file-symbols-1.jpg b/images/xi-a-file-symbols-1.jpg
new file mode 100644
index 00000000..5d27ac3e
Binary files /dev/null and b/images/xi-a-file-symbols-1.jpg differ
diff --git a/images/xi-a-file-symbols-2.gif b/images/xi-a-file-symbols-2.gif
new file mode 100644
index 00000000..6ecc7893
Binary files /dev/null and b/images/xi-a-file-symbols-2.gif differ
diff --git a/images/xi-a-file-symbols-3.png b/images/xi-a-file-symbols-3.png
new file mode 100644
index 00000000..10d37749
Binary files /dev/null and b/images/xi-a-file-symbols-3.png differ
diff --git a/images/xi-b-file-symbols-1.jpg b/images/xi-b-file-symbols-1.jpg
new file mode 100644
index 00000000..21b053fe
Binary files /dev/null and b/images/xi-b-file-symbols-1.jpg differ
diff --git a/images/xi-b-file-symbols-2.png b/images/xi-b-file-symbols-2.png
new file mode 100644
index 00000000..e0e3b7c1
Binary files /dev/null and b/images/xi-b-file-symbols-2.png differ
diff --git a/images/xii-a-invalidate-cache-1.jpg b/images/xii-a-invalidate-cache-1.jpg
new file mode 100644
index 00000000..b185e5b5
Binary files /dev/null and b/images/xii-a-invalidate-cache-1.jpg differ
diff --git a/images/xii-a-invalidate-cache-2.jpg b/images/xii-a-invalidate-cache-2.jpg
new file mode 100644
index 00000000..4fbe4ec5
Binary files /dev/null and b/images/xii-a-invalidate-cache-2.jpg differ
diff --git a/images/xii-a-invalidate-cache-3.jpg b/images/xii-a-invalidate-cache-3.jpg
new file mode 100644
index 00000000..2f3b20bf
Binary files /dev/null and b/images/xii-a-invalidate-cache-3.jpg differ
diff --git a/images/xiii-a-make-introduce-1.jpg b/images/xiii-a-make-introduce-1.jpg
new file mode 100644
index 00000000..2aa243f6
Binary files /dev/null and b/images/xiii-a-make-introduce-1.jpg differ
diff --git a/images/xiii-b-befour-launch-1.jpg b/images/xiii-b-befour-launch-1.jpg
new file mode 100644
index 00000000..79e766d5
Binary files /dev/null and b/images/xiii-b-befour-launch-1.jpg differ
diff --git a/images/xiii-b-befour-launch-2.jpg b/images/xiii-b-befour-launch-2.jpg
new file mode 100644
index 00000000..219d1553
Binary files /dev/null and b/images/xiii-b-befour-launch-2.jpg differ
diff --git a/images/xiii-c-compiler-setting-1.jpg b/images/xiii-c-compiler-setting-1.jpg
new file mode 100644
index 00000000..5a320f5d
Binary files /dev/null and b/images/xiii-c-compiler-setting-1.jpg differ
diff --git a/images/xiii-c-compiler-setting-2.jpg b/images/xiii-c-compiler-setting-2.jpg
new file mode 100644
index 00000000..c477eb34
Binary files /dev/null and b/images/xiii-c-compiler-setting-2.jpg differ
diff --git a/images/xiii-c-compiler-setting-3.gif b/images/xiii-c-compiler-setting-3.gif
new file mode 100644
index 00000000..20cde81a
Binary files /dev/null and b/images/xiii-c-compiler-setting-3.gif differ
diff --git a/images/xiv-a-project-and-module-introduce-1.gif b/images/xiv-a-project-and-module-introduce-1.gif
new file mode 100644
index 00000000..f61723d6
Binary files /dev/null and b/images/xiv-a-project-and-module-introduce-1.gif differ
diff --git a/images/xiv-b-sdk-introduce-1.jpg b/images/xiv-b-sdk-introduce-1.jpg
new file mode 100644
index 00000000..07e8cd86
Binary files /dev/null and b/images/xiv-b-sdk-introduce-1.jpg differ
diff --git a/images/xiv-b-sdk-introduce-2.jpg b/images/xiv-b-sdk-introduce-2.jpg
new file mode 100644
index 00000000..81677216
Binary files /dev/null and b/images/xiv-b-sdk-introduce-2.jpg differ
diff --git a/images/xiv-c-language-level-introduce-1.jpg b/images/xiv-c-language-level-introduce-1.jpg
new file mode 100644
index 00000000..a9b6799d
Binary files /dev/null and b/images/xiv-c-language-level-introduce-1.jpg differ
diff --git a/images/xiv-c-language-level-introduce-2.jpg b/images/xiv-c-language-level-introduce-2.jpg
new file mode 100644
index 00000000..b277c566
Binary files /dev/null and b/images/xiv-c-language-level-introduce-2.jpg differ
diff --git a/images/xiv-d-module-setting-1.jpg b/images/xiv-d-module-setting-1.jpg
new file mode 100644
index 00000000..5a72c3be
Binary files /dev/null and b/images/xiv-d-module-setting-1.jpg differ
diff --git a/images/xiv-d-module-setting-2.jpg b/images/xiv-d-module-setting-2.jpg
new file mode 100644
index 00000000..eeb49615
Binary files /dev/null and b/images/xiv-d-module-setting-2.jpg differ
diff --git a/images/xix-a-emmet-introduce-1.gif b/images/xix-a-emmet-introduce-1.gif
new file mode 100644
index 00000000..0cb634df
Binary files /dev/null and b/images/xix-a-emmet-introduce-1.gif differ
diff --git a/images/xix-a-emmet-introduce-2.gif b/images/xix-a-emmet-introduce-2.gif
new file mode 100644
index 00000000..9cd7d536
Binary files /dev/null and b/images/xix-a-emmet-introduce-2.gif differ
diff --git a/images/xix-b-emmet-settings-1.jpg b/images/xix-b-emmet-settings-1.jpg
new file mode 100644
index 00000000..d6767649
Binary files /dev/null and b/images/xix-b-emmet-settings-1.jpg differ
diff --git a/images/xix-b-emmet-settings-2.gif b/images/xix-b-emmet-settings-2.gif
new file mode 100644
index 00000000..9732dc86
Binary files /dev/null and b/images/xix-b-emmet-settings-2.gif differ
diff --git a/images/xix-b-emmet-settings-3.jpg b/images/xix-b-emmet-settings-3.jpg
new file mode 100644
index 00000000..8dd30689
Binary files /dev/null and b/images/xix-b-emmet-settings-3.jpg differ
diff --git a/images/xv-a-project-create-1.jpg b/images/xv-a-project-create-1.jpg
new file mode 100644
index 00000000..57d298a0
Binary files /dev/null and b/images/xv-a-project-create-1.jpg differ
diff --git a/images/xv-a-project-create-10.gif b/images/xv-a-project-create-10.gif
new file mode 100644
index 00000000..e9d20daa
Binary files /dev/null and b/images/xv-a-project-create-10.gif differ
diff --git a/images/xv-a-project-create-2.jpg b/images/xv-a-project-create-2.jpg
new file mode 100644
index 00000000..6ab2d784
Binary files /dev/null and b/images/xv-a-project-create-2.jpg differ
diff --git a/images/xv-a-project-create-3.jpg b/images/xv-a-project-create-3.jpg
new file mode 100644
index 00000000..9f7158dd
Binary files /dev/null and b/images/xv-a-project-create-3.jpg differ
diff --git a/images/xv-a-project-create-4.jpg b/images/xv-a-project-create-4.jpg
new file mode 100644
index 00000000..2edbe651
Binary files /dev/null and b/images/xv-a-project-create-4.jpg differ
diff --git a/images/xv-a-project-create-5.jpg b/images/xv-a-project-create-5.jpg
new file mode 100644
index 00000000..7b585a7b
Binary files /dev/null and b/images/xv-a-project-create-5.jpg differ
diff --git a/images/xv-a-project-create-6.jpg b/images/xv-a-project-create-6.jpg
new file mode 100644
index 00000000..5e6eb373
Binary files /dev/null and b/images/xv-a-project-create-6.jpg differ
diff --git a/images/xv-a-project-create-7.jpg b/images/xv-a-project-create-7.jpg
new file mode 100644
index 00000000..f84ba613
Binary files /dev/null and b/images/xv-a-project-create-7.jpg differ
diff --git a/images/xv-a-project-create-8.jpg b/images/xv-a-project-create-8.jpg
new file mode 100644
index 00000000..ac00b44f
Binary files /dev/null and b/images/xv-a-project-create-8.jpg differ
diff --git a/images/xv-a-project-create-9.gif b/images/xv-a-project-create-9.gif
new file mode 100644
index 00000000..ae8e7dac
Binary files /dev/null and b/images/xv-a-project-create-9.gif differ
diff --git a/images/xv-b-project-introduce-1.jpg b/images/xv-b-project-introduce-1.jpg
new file mode 100644
index 00000000..6a6ddb61
Binary files /dev/null and b/images/xv-b-project-introduce-1.jpg differ
diff --git a/images/xvi-a-version-control-system-introduce-1.jpg b/images/xvi-a-version-control-system-introduce-1.jpg
new file mode 100644
index 00000000..47aa2e22
Binary files /dev/null and b/images/xvi-a-version-control-system-introduce-1.jpg differ
diff --git a/images/xvi-b-version-control-system-svn-introduce-1.jpg b/images/xvi-b-version-control-system-svn-introduce-1.jpg
new file mode 100644
index 00000000..9b55f7e9
Binary files /dev/null and b/images/xvi-b-version-control-system-svn-introduce-1.jpg differ
diff --git a/images/xvi-b-version-control-system-svn-introduce-2.jpg b/images/xvi-b-version-control-system-svn-introduce-2.jpg
new file mode 100644
index 00000000..9eada32e
Binary files /dev/null and b/images/xvi-b-version-control-system-svn-introduce-2.jpg differ
diff --git a/images/xvi-c-version-control-system-git-introduce-1.jpg b/images/xvi-c-version-control-system-git-introduce-1.jpg
new file mode 100644
index 00000000..f9a06ce7
Binary files /dev/null and b/images/xvi-c-version-control-system-git-introduce-1.jpg differ
diff --git a/images/xvi-d-version-control-system-github-introduce-1.jpg b/images/xvi-d-version-control-system-github-introduce-1.jpg
new file mode 100644
index 00000000..65412f54
Binary files /dev/null and b/images/xvi-d-version-control-system-github-introduce-1.jpg differ
diff --git a/images/xvi-d-version-control-system-github-introduce-2.jpg b/images/xvi-d-version-control-system-github-introduce-2.jpg
new file mode 100644
index 00000000..0b4aed26
Binary files /dev/null and b/images/xvi-d-version-control-system-github-introduce-2.jpg differ
diff --git a/images/xvi-d-version-control-system-github-introduce-3.jpg b/images/xvi-d-version-control-system-github-introduce-3.jpg
new file mode 100644
index 00000000..c615742c
Binary files /dev/null and b/images/xvi-d-version-control-system-github-introduce-3.jpg differ
diff --git a/images/xvi-d-version-control-system-github-introduce-4.jpg b/images/xvi-d-version-control-system-github-introduce-4.jpg
new file mode 100644
index 00000000..beb326ab
Binary files /dev/null and b/images/xvi-d-version-control-system-github-introduce-4.jpg differ
diff --git a/images/xvi-e-version-control-system-operation-introduce-1.jpg b/images/xvi-e-version-control-system-operation-introduce-1.jpg
new file mode 100644
index 00000000..46cfa8e0
Binary files /dev/null and b/images/xvi-e-version-control-system-operation-introduce-1.jpg differ
diff --git a/images/xvi-e-version-control-system-operation-introduce-2.jpg b/images/xvi-e-version-control-system-operation-introduce-2.jpg
new file mode 100644
index 00000000..b87a9ef2
Binary files /dev/null and b/images/xvi-e-version-control-system-operation-introduce-2.jpg differ
diff --git a/images/xvi-e-version-control-system-operation-introduce-3.jpg b/images/xvi-e-version-control-system-operation-introduce-3.jpg
new file mode 100644
index 00000000..0ca96804
Binary files /dev/null and b/images/xvi-e-version-control-system-operation-introduce-3.jpg differ
diff --git a/images/xvi-e-version-control-system-operation-introduce-4.jpg b/images/xvi-e-version-control-system-operation-introduce-4.jpg
new file mode 100644
index 00000000..6d630404
Binary files /dev/null and b/images/xvi-e-version-control-system-operation-introduce-4.jpg differ
diff --git a/images/xvi-f-version-control-system-settings-introduce-1.jpg b/images/xvi-f-version-control-system-settings-introduce-1.jpg
new file mode 100644
index 00000000..32d04260
Binary files /dev/null and b/images/xvi-f-version-control-system-settings-introduce-1.jpg differ
diff --git a/images/xvi-f-version-control-system-settings-introduce-2.jpg b/images/xvi-f-version-control-system-settings-introduce-2.jpg
new file mode 100644
index 00000000..a8519e71
Binary files /dev/null and b/images/xvi-f-version-control-system-settings-introduce-2.jpg differ
diff --git a/images/xvi-f-version-control-system-settings-introduce-3.jpg b/images/xvi-f-version-control-system-settings-introduce-3.jpg
new file mode 100644
index 00000000..2b1a3c62
Binary files /dev/null and b/images/xvi-f-version-control-system-settings-introduce-3.jpg differ
diff --git a/images/xvi-f-version-control-system-settings-introduce-4.jpg b/images/xvi-f-version-control-system-settings-introduce-4.jpg
new file mode 100644
index 00000000..056be568
Binary files /dev/null and b/images/xvi-f-version-control-system-settings-introduce-4.jpg differ
diff --git a/images/xvi-f-version-control-system-settings-introduce-5.jpg b/images/xvi-f-version-control-system-settings-introduce-5.jpg
new file mode 100644
index 00000000..334d6a59
Binary files /dev/null and b/images/xvi-f-version-control-system-settings-introduce-5.jpg differ
diff --git a/images/xvii-a-live-templates-introduce-1.gif b/images/xvii-a-live-templates-introduce-1.gif
new file mode 100644
index 00000000..037ac18f
Binary files /dev/null and b/images/xvii-a-live-templates-introduce-1.gif differ
diff --git a/images/xvii-a-live-templates-introduce-2.jpg b/images/xvii-a-live-templates-introduce-2.jpg
new file mode 100644
index 00000000..f14a6dc1
Binary files /dev/null and b/images/xvii-a-live-templates-introduce-2.jpg differ
diff --git a/images/xvii-b-live-templates-settings-1.jpg b/images/xvii-b-live-templates-settings-1.jpg
new file mode 100644
index 00000000..3b2b8a4a
Binary files /dev/null and b/images/xvii-b-live-templates-settings-1.jpg differ
diff --git a/images/xvii-b-live-templates-settings-2.jpg b/images/xvii-b-live-templates-settings-2.jpg
new file mode 100644
index 00000000..413a9b5f
Binary files /dev/null and b/images/xvii-b-live-templates-settings-2.jpg differ
diff --git a/images/xvii-c-live-templates-variables-settings-1.jpg b/images/xvii-c-live-templates-variables-settings-1.jpg
new file mode 100644
index 00000000..19673457
Binary files /dev/null and b/images/xvii-c-live-templates-variables-settings-1.jpg differ
diff --git a/images/xvii-d-live-templates-surround-settings-1.gif b/images/xvii-d-live-templates-surround-settings-1.gif
new file mode 100644
index 00000000..be03535d
Binary files /dev/null and b/images/xvii-d-live-templates-surround-settings-1.gif differ
diff --git a/images/xviii-a-file-and-code-templates-introduce-1.gif b/images/xviii-a-file-and-code-templates-introduce-1.gif
new file mode 100644
index 00000000..72475c1e
Binary files /dev/null and b/images/xviii-a-file-and-code-templates-introduce-1.gif differ
diff --git a/images/xviii-a-file-and-code-templates-introduce-2.gif b/images/xviii-a-file-and-code-templates-introduce-2.gif
new file mode 100644
index 00000000..bf85bca7
Binary files /dev/null and b/images/xviii-a-file-and-code-templates-introduce-2.gif differ
diff --git a/images/xviii-b-file-and-code-templates-settings-1.jpg b/images/xviii-b-file-and-code-templates-settings-1.jpg
new file mode 100644
index 00000000..c75d32d3
Binary files /dev/null and b/images/xviii-b-file-and-code-templates-settings-1.jpg differ
diff --git a/images/xviii-b-file-and-code-templates-settings-2.jpg b/images/xviii-b-file-and-code-templates-settings-2.jpg
new file mode 100644
index 00000000..506ab013
Binary files /dev/null and b/images/xviii-b-file-and-code-templates-settings-2.jpg differ
diff --git a/images/xviii-b-file-and-code-templates-settings-3.jpg b/images/xviii-b-file-and-code-templates-settings-3.jpg
new file mode 100644
index 00000000..06854a0c
Binary files /dev/null and b/images/xviii-b-file-and-code-templates-settings-3.jpg differ
diff --git a/images/xviii-b-file-and-code-templates-settings-4.jpg b/images/xviii-b-file-and-code-templates-settings-4.jpg
new file mode 100644
index 00000000..5d64baa3
Binary files /dev/null and b/images/xviii-b-file-and-code-templates-settings-4.jpg differ
diff --git a/images/xviii-b-file-and-code-templates-settings-5.gif b/images/xviii-b-file-and-code-templates-settings-5.gif
new file mode 100644
index 00000000..02b46315
Binary files /dev/null and b/images/xviii-b-file-and-code-templates-settings-5.gif differ
diff --git a/images/xviii-b-file-and-code-templates-settings-6.jpg b/images/xviii-b-file-and-code-templates-settings-6.jpg
new file mode 100644
index 00000000..3b9f8449
Binary files /dev/null and b/images/xviii-b-file-and-code-templates-settings-6.jpg differ
diff --git a/images/xx-a-plugins-settings-1.jpg b/images/xx-a-plugins-settings-1.jpg
new file mode 100644
index 00000000..0dc2b902
Binary files /dev/null and b/images/xx-a-plugins-settings-1.jpg differ
diff --git a/images/xx-a-plugins-settings-2.jpg b/images/xx-a-plugins-settings-2.jpg
new file mode 100644
index 00000000..d7d60d5b
Binary files /dev/null and b/images/xx-a-plugins-settings-2.jpg differ
diff --git a/images/xx-a-plugins-settings-3.jpg b/images/xx-a-plugins-settings-3.jpg
new file mode 100644
index 00000000..86facef0
Binary files /dev/null and b/images/xx-a-plugins-settings-3.jpg differ
diff --git a/images/xx-b-plugins-install-1.gif b/images/xx-b-plugins-install-1.gif
new file mode 100644
index 00000000..8ccfa165
Binary files /dev/null and b/images/xx-b-plugins-install-1.gif differ
diff --git a/images/xx-b-plugins-install-2.gif b/images/xx-b-plugins-install-2.gif
new file mode 100644
index 00000000..03e409de
Binary files /dev/null and b/images/xx-b-plugins-install-2.gif differ
diff --git a/images/xxi-a-eclipse-project-introduce-1.gif b/images/xxi-a-eclipse-project-introduce-1.gif
new file mode 100644
index 00000000..d90ea43d
Binary files /dev/null and b/images/xxi-a-eclipse-project-introduce-1.gif differ
diff --git a/images/xxi-b-eclipse-project-settings-1.jpg b/images/xxi-b-eclipse-project-settings-1.jpg
new file mode 100644
index 00000000..84a0146f
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-1.jpg differ
diff --git a/images/xxi-b-eclipse-project-settings-10.gif b/images/xxi-b-eclipse-project-settings-10.gif
new file mode 100644
index 00000000..45a8071b
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-10.gif differ
diff --git a/images/xxi-b-eclipse-project-settings-11.gif b/images/xxi-b-eclipse-project-settings-11.gif
new file mode 100644
index 00000000..167425e1
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-11.gif differ
diff --git a/images/xxi-b-eclipse-project-settings-2.jpg b/images/xxi-b-eclipse-project-settings-2.jpg
new file mode 100644
index 00000000..01099983
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-2.jpg differ
diff --git a/images/xxi-b-eclipse-project-settings-3.jpg b/images/xxi-b-eclipse-project-settings-3.jpg
new file mode 100644
index 00000000..7ffa8bf2
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-3.jpg differ
diff --git a/images/xxi-b-eclipse-project-settings-4.jpg b/images/xxi-b-eclipse-project-settings-4.jpg
new file mode 100644
index 00000000..23b714cb
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-4.jpg differ
diff --git a/images/xxi-b-eclipse-project-settings-5.jpg b/images/xxi-b-eclipse-project-settings-5.jpg
new file mode 100644
index 00000000..bacd8a0d
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-5.jpg differ
diff --git a/images/xxi-b-eclipse-project-settings-6.jpg b/images/xxi-b-eclipse-project-settings-6.jpg
new file mode 100644
index 00000000..fe0f2480
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-6.jpg differ
diff --git a/images/xxi-b-eclipse-project-settings-7.jpg b/images/xxi-b-eclipse-project-settings-7.jpg
new file mode 100644
index 00000000..69977e7b
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-7.jpg differ
diff --git a/images/xxi-b-eclipse-project-settings-8.gif b/images/xxi-b-eclipse-project-settings-8.gif
new file mode 100644
index 00000000..df12daa4
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-8.gif differ
diff --git a/images/xxi-b-eclipse-project-settings-9.jpg b/images/xxi-b-eclipse-project-settings-9.jpg
new file mode 100644
index 00000000..abd62b2f
Binary files /dev/null and b/images/xxi-b-eclipse-project-settings-9.jpg differ
diff --git a/images/xxi-c-eclipse-project-tomcat-settings-1.gif b/images/xxi-c-eclipse-project-tomcat-settings-1.gif
new file mode 100644
index 00000000..818b2e71
Binary files /dev/null and b/images/xxi-c-eclipse-project-tomcat-settings-1.gif differ
diff --git a/images/xxi-c-eclipse-project-tomcat-settings-2.jpg b/images/xxi-c-eclipse-project-tomcat-settings-2.jpg
new file mode 100644
index 00000000..d410a8ab
Binary files /dev/null and b/images/xxi-c-eclipse-project-tomcat-settings-2.jpg differ
diff --git a/images/xxi-c-eclipse-project-tomcat-settings-3.jpg b/images/xxi-c-eclipse-project-tomcat-settings-3.jpg
new file mode 100644
index 00000000..6384444a
Binary files /dev/null and b/images/xxi-c-eclipse-project-tomcat-settings-3.jpg differ
diff --git a/images/xxi-d-eclipse-project-tomcat-run-1.gif b/images/xxi-d-eclipse-project-tomcat-run-1.gif
new file mode 100644
index 00000000..52526de5
Binary files /dev/null and b/images/xxi-d-eclipse-project-tomcat-run-1.gif differ
diff --git a/images/xxi-d-eclipse-project-tomcat-run-2.gif b/images/xxi-d-eclipse-project-tomcat-run-2.gif
new file mode 100644
index 00000000..9ad57a7b
Binary files /dev/null and b/images/xxi-d-eclipse-project-tomcat-run-2.gif differ
diff --git a/images/xxi-d-eclipse-project-tomcat-run-3.jpg b/images/xxi-d-eclipse-project-tomcat-run-3.jpg
new file mode 100644
index 00000000..d2b62944
Binary files /dev/null and b/images/xxi-d-eclipse-project-tomcat-run-3.jpg differ
diff --git a/images/xxi-e-eclipse-project-output-war-1.gif b/images/xxi-e-eclipse-project-output-war-1.gif
new file mode 100644
index 00000000..de7c6f91
Binary files /dev/null and b/images/xxi-e-eclipse-project-output-war-1.gif differ
diff --git a/images/xxi-e-eclipse-project-tomcat-stop-1.gif b/images/xxi-e-eclipse-project-tomcat-stop-1.gif
new file mode 100644
index 00000000..0f0bfea5
Binary files /dev/null and b/images/xxi-e-eclipse-project-tomcat-stop-1.gif differ
diff --git a/install-summarize.md b/install-summarize.md
new file mode 100644
index 00000000..62acfbda
--- /dev/null
+++ b/install-summarize.md
@@ -0,0 +1,13 @@
+# 安装总结
+
+## 硬件建议
+
+从上一讲的安装教程来看,IntelliJ IDEA 对硬件的要求看上去不是很高。可是实际在开发中其实并不是这样的,特别是开发 Java Web 的项目的计算机,2 G 内存是基本不够用的。
+
+我们现在来假设一种国内常见的开发环境:
+
+>有一个在开发的 Java Web 项目,它使用的框架为主流的:Struts + Spring + Hibernate,使用者三个框架的过程中,我们要引入大量的框架架包,在我们的 Web 容器启动时,这些框架架包就要占用大量的内存,而且 IntelliJ IDEA 本身功能繁多,占用的内存也不算低,再加上我们这里还没计算计算机上的其他软件应用。所以基本上 2 G 内存的计算机只适合写小程序、小项目或是开发静态页面。
+
+我个人建议,如果你是开发 Java Web 项目最好的方案是 8 G 内存或是以上,硬盘能在用上固态是最好的,因为 IntelliJ IDEA 有大量的缓存、索引文件,把 IntelliJ IDEA 的缓存、索引文件放在固态上,IntelliJ IDEA 流畅度也会加快很多。
+
+**如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,我这里可以直接明白地告诉你:这基本上是不可能的,本质上你应该对自己的硬件设备进行升级**。
diff --git a/installation-directory-introduce.md b/installation-directory-introduce.md
new file mode 100644
index 00000000..101b0d9e
--- /dev/null
+++ b/installation-directory-introduce.md
@@ -0,0 +1,48 @@
+# IntelliJ IDEA 相关核心文件和目录介绍
+
+## 安装目录介绍
+
+![安装目录介绍](images/viii-a-installation-directory-1.jpg)
+
+> * IntelliJ IDEA 的安装目录并不复杂,上图为最常改动的 bin 目录,经常会改动的文件或是必须介绍就是如图红色框中的几个。
+> * `idea.exe` 文件是 IntelliJ IDEA 32 位的可行执行文件,IntelliJ IDEA 安装完默认发送到桌面的也就是这个执行文件的快捷方式。
+> * `idea.exe.vmoptions` 文件是 IntelliJ IDEA 32 位的可执行文件的 VM 配置文件,具体配置修改会下面进行专门讲解。
+> * `idea64.exe` 文件是 IntelliJ IDEA 64 位的可行执行文件,要求必须电脑上装有 JDK 64 位版本。64 位的系统也是建议使用该文件。
+> * `idea64.exe.vmoptions` 文件是 IntelliJ IDEA 64 位的可执行文件的 VM 配置文件,具体配置修改会下面进行专门讲解。
+> * `idea.properties` 文件是 IntelliJ IDEA 的一些属性配置文件,具体配置修改会下面进行专门讲解。
+
+## 设置目录介绍
+
+![设置目录介绍](images/viii-a-installation-directory-2.jpg)
+
+> * 不管你使用的是哪个操作系统,IntelliJ IDEA 的设置目录命名是统一的、有规律:.IntelliJ IDEA14。其中 14 表示大版本号,如果你电脑上还同时装有 13 的版本,那则还应该会有一个:`.IntelliJ IDEA13` 的设置目录,其他版本道理一样。
+> * 在三大主流的操作系统上,你只要对整个硬盘进行搜索:`.IntelliJ IDEA14`,即可找到,无需可以去记忆到底生成在哪个目录下。
+> * 对于这个设置目录有一个特性,就是你删除掉整个目录之后,重新启动 IntelliJ IDEA 会再自动帮你再生成一个全新的默认配置,所以很多时候如果你把 IntelliJ IDEA 配置改坏了,没关系,删掉该目录,一切都会还原到默认,我是很建议新人可以多自己摸索 IntelliJ IDEA 的配置,多几次还原,有助于加深对 IntelliJ IDEA 的了解。
+> * `config` 目录是 IntelliJ IDEA 个性化化配置目录,或者说是整个 IDE 设置目录。也是我个人认为最重要的目录,没有之一,如果你还记得安装篇的介绍的时候,安装新版本的 IntelliJ IDEA 会自动扫描硬盘上的旧配置目录,指的就是该目录。这个目录主要记录了:IDE 主要配置功能、自定义的代码模板、自定义的文件模板、自定义的快捷键、Project 的 tasks 记录等等个性化的设置。
+> * `system` 目录是 IntelliJ IDEA 系统文件目录,是 IntelliJ IDEA 与开发项目一个桥梁目录,里面主要有:缓存、索引、容器文件输出等等,虽然不是最重要目录,但是也是最不可或缺目录之一。
+
+## 配置文件常见修改内容说明
+
+![JVM配置说明](images/viii-a-configuration-files-1.jpg)
+
+> * 上图是 64 位可执行文件的 JVM 配置文件内容,如果你是 32 位的系统你应该修改的是 `idea.exe.vmoptions` 文件里面的内容,但是由于 32 位系统内存一般都是 2 G 左右的,所以也没有多大空间可以调整,所以一般无需调整的。
+> * 修改的原则主要是根据自己机器的内存情况来判断的,我个人是建议 8 G 以下的机子或是静态页面开发者都是无需修改的。如果你是开发大型项目、Java 项目或是 Android 项目,并且内存大于 8 G,建议进行修改,常修改的就是下面 4 个参数,我这里主要以我的机子会例进行建议,每个人机子情况不一,这里也只是做一个引子,最好的调整方式是你可以根据 jconsole 这类工具进行观察后个性化调整。
+>> * `-Xms128m`,16 G 内存的机器可尝试设置为 `-Xms512m`
+>> * `-Xmx750m`,16 G 内存的机器可尝试设置为 `-Xmx1500m`
+>> * `-XX:MaxPermSize=350m`,16 G 内存的机器可尝试设置为 `-XX:MaxPermSize=500m`
+>> * `-XX:ReservedCodeCacheSize=225m`,16 G 内存的机器可尝试设置为 `-XX:ReservedCodeCacheSize=500m`
+
+![JVM配置说明](images/viii-a-configuration-files-2.jpg)
+
+> * 上图是 IntelliJ IDEA 一些属性配置,没有 32 位和 64 位之分,修改原则主要根据个人对 IntelliJ IDEA 的个性化配置情况来分析。常修改的就是下面 4 个参数:
+>> * `idea.config.path=${user.home}/.IntelliJIdea/config`,该属性主要用于指向 IntelliJ IDEA 的个性化配置目录,默认是被注释,打开注释之后才算启用该属性,这里需要特别注意的是斜杠方向,这里用的是正斜杠。
+>> * `idea.system.path=${user.home}/.IntelliJIdea/system`,该属性主要用于指向 IntelliJ IDEA 的系统文件目录,默认是被注释,打开注释之后才算启用该属性,这里需要特别注意的是斜杠方向,这里用的是正斜杠。如果你的项目很多,则该目录会很大,如果你的 C 盘空间不够的时候,还是建议把该目录转移到其他盘符下。
+>> * `idea.max.intellisense.filesize=2500`,该属性主要用于提高在编辑大文件时候的代码帮助。IntelliJ IDEA 在编辑大文件的时候还是很容易卡顿的。
+>> * `idea.cycle.buffer.size=1024`,该属性主要用于控制控制台输出缓存。有遇到一些项目开启很多输出,控制台很快就被刷满了没办法再自动输出后面内容,这种项目建议增大该值或是直接禁用掉,禁用语句 `idea.cycle.buffer.size=disabled`。
+
+## 设置目录进行多台设置同步化处理
+
+![JVM配置说明](images/viii-a-setting-synchronize-1.jpg)
+
+> * 上图是我的个性化配置目录,我是存放在 F 盘,同时该目录也是在 360 同步盘中。这样做主要是为了让我的多台设置可以同时使用一个个性化配置,保证个人开发习惯,额外作用就是在服务器上一个备份作用。
+> * 设置方式很简单,修改 `idea.properties` 属性文件中的 `idea.config.path` 值,我的机器为:`idea.config.path=F:/360SycDir/idea_config/config`
diff --git a/interface-introduce.md b/interface-introduce.md
new file mode 100644
index 00000000..89f13228
--- /dev/null
+++ b/interface-introduce.md
@@ -0,0 +1,33 @@
+# IntelliJ IDEA 界面介绍
+
+## 首次打开
+
+![首次打开](images/ix-interface-introduce-1.jpg)
+
+> * **重点说明:** IntelliJ IDEA 是没有类似 Eclipse 的工作空间的概念(`Workspaces` ),最大单元就是 `Project`。如果你同时观察多个项目的情况,IntelliJ IDEA 提供的解决方案是打开多个项目实例,你可以理解为开多个项目窗口。
+> * 命令 `Create New Project` 创建一个新项目。
+> * 命令 `Import Project` 导入一个已有项目。
+> * 命令 `Open` 打开一个已有项目,可以直接打开 Eclipse 项目,但是由于两者 IDE 下的项目配置不一样,所以项目还是需要配置的。
+> * 命令 `Check out from Version Control` 可以通过服务器上的项目地址 Checkout Github 上面项目或是其他 Git 托管服务器上的项目。
+> * 为了介绍 IntelliJ IDEA 界面,我们这里创建一个新 HTML 项目。
+
+## 新建 HTML 项目
+
+![新建 HTML 项目](images/ix-interface-introduce-2.jpg)
+
+![新建 HTML 项目](images/ix-interface-introduce-3.jpg)
+
+## 界面介绍
+
+![界面介绍](images/ix-interface-introduce-4.jpg)
+
+> * 对于首次创建或打开的新项目,IntelliJ IDEA 都会创建项目索引,如上图标注 1 所示。大型项目在创建索引过程中可能必须会卡顿,所以 **强烈建议** 创建索引过程最好不要动项目。
+> * 每次进入项目中,IntelliJ IDEA 会根据当前项目情况进行问题反馈,或是升级更新提示等。使用方式如上图标注 2 所示。
+
+![界面介绍](images/ix-interface-introduce-5.jpg)
+
+> * 如上图,IntelliJ IDEA 默认界面是隐藏掉 `Toolbar` 和 `Tool Buttons`,我个人习惯看到这两个,所以一般都会进行开启。
+
+![界面介绍](images/ix-interface-introduce-6.jpg)
+
+> * 如上图标注 1 所示为开启 `Toolbar` 和 `Tool Buttons` 效果。
diff --git a/introduce.md b/introduce.md
new file mode 100644
index 00000000..f54e16b1
--- /dev/null
+++ b/introduce.md
@@ -0,0 +1,71 @@
+# 介绍
+
+## 本系列教程介绍
+
+本教程目前还处于书写和草稿阶段,谢绝任何方式的转载。
+
+本系列教程从 IntelliJ IDEA 的安装、卸载、软件设置、项目配置等各个方面进行讲解。通过本系列教程的学习,也希望你能爱上 IntelliJ IDEA,爱上它的体贴。同时学完本系列教程对于你学习 JetBrains 公司下的其他产品也有好处,其他产品包括:
+
+> * [PhpStorm](http://www.jetbrains.com/phpstorm/ "PhpStorm 主要用于开发 PHP") 主要用于开发 PHP
+> * [RubyMine](http://www.jetbrains.com/ruby/ "RubyMine 主要用于开发 Ruby") 主要用于开发 Ruby
+> * [PyCharm](http://www.jetbrains.com/pycharm/ "PyCharm 主要用于开发 Python") 主要用于开发 Python
+> * [AppCode](http://www.jetbrains.com/objc/ "AppCode 主要用于开发 Objective-C") 主要用于开发 Objective-C / Swift
+> * [CLion](http://www.jetbrains.com/clion/ "CLion 主要用于开发 C/C++") 主要用于开发 C / C++
+> * [WebStorm](http://www.jetbrains.com/webstorm/ "WebStorm 主要用于开发 JavaScript 等前端技术") 主要用于开发 JavaScript、HTML5、CSS3 等前端技术
+> * [0xDBE](http://www.jetbrains.com/dbe/ "0xDBE 主要用于开发 SQL") 主要用于开发 SQL
+> * [Android Studio](http://developer.android.com/tools/studio/ "Android Studio 主要用于开发 Android") 主要用于开发 Android(Google 基本 IntelliJ IDEA 社区版进行迭代所以也姑且算上)
+
+
+## IntelliJ IDEA 介绍
+
+> * IntelliJ IDEA 官网:
+
+IntelliJ IDEA 在 2015 年 06 月官网主页是这样介绍自己的:
+
+> Excel at enterprise, mobile and web development with Java, Scala and Groovy, with all the latest modern technologies and frameworks available out of the box.
+
+简明翻译:IntelliJ IDEA 主要用于支持 Java、Scala、Groovy 等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 Web 应用的开发。
+
+IntelliJ IDEA 对自己的定义是很清晰的,对于新人来讲可能还不太理解,可能还会有误会,认为它博而不精,但是对于老用户来讲应该是非常认可上面这句话的。通过下面功能表格,新人对于 IntelliJ IDEA 所具备的功能会有一个新的认识。
+
+如果用一句话来形容 IntelliJ IDEA,我会说:**IntelliJ IDEA 是目前所有IDE中最具备沉浸式的 IDE,没有之一**。
+
+## IntelliJ IDEA 主要功能介绍
+
+> * 语言支持上:
+
+|安装插件后支持 |SQL类 |基本JVM |
+|:-----------------|:----------|:--------------|
+|PHP |PostgreSQL |Java |
+|Python |MySQL |Groovy |
+|Ruby |Oracle | |
+|Scala |SQL Server | |
+|Kotlin | | |
+|Clojure | | |
+
+> * 其他支持:
+
+| 支持的框架 | 额外支持的语言代码提示 | 支持的容器 |
+|:--------------|:--------------------|:----------|
+|Spring MVC |HTML5 |Tomcat |
+|GWT |CSS3 |TomEE |
+|Vaadin |SASS |WebLogin |
+|Play |LESS |JBoss |
+|Grails |JavaScript |Jetty |
+|Web Services |CoffeeScript |WebSphere |
+|JSF |Node.js | |
+|Struts |ActionScript | |
+|Hibernate | | |
+|Flex | | |
+
+上面特性只是 IntelliJ IDEA 的冰山一角,而且这个还不是 IntelliJ IDEA 最重要的地方,IntelliJ IDEA 最重要的特性就是人性化、智能,后面学习你会慢慢接触到。
+
+## 更多官网信息
+
+> * IntelliJ IDEA 主要特性介绍 1:
+> * IntelliJ IDEA 主要特性介绍 2:
+> * 官网博客:
+> * 官网 wiki:
+> * 官网社区:
+> * 官网快速入门:
+> * 官网在线帮助文档:
\ No newline at end of file
diff --git a/keymap-introduce.md b/keymap-introduce.md
new file mode 100644
index 00000000..b11f218e
--- /dev/null
+++ b/keymap-introduce.md
@@ -0,0 +1,239 @@
+# 快捷键
+
+## 说明
+
+IntelliJ IDEA 的便捷操作性,快捷键的功劳占了一大半,对于各个快捷键组合请认真对待。IntelliJ IDEA 本身的设计思维是提倡键盘优先于鼠标的,所以各种快捷键组合层出不穷,对于快捷键设置也有各种支持,对于其他 IDE 的快捷键组合也有预设模板进行支持。
+
+关于各个快捷键的频率分类上可能每个人都有各自的看法,下面的整理也只是已我个人的使用习惯来划分的,而我应该是可以代表某一部分小众人员。但是我个人还是建议你可以在我的基础上整理一份属于的快捷键目录,本篇文章也只是起到一个工具和引子的作用。
+
+对于下面各个快捷键的使介绍描述也许用我个人语言翻译起来不够准确或是不全面,且在不同的文件类型上按出来的效果也可能结果不太一样,所以 **强烈建议** 你自己把各个快捷键都亲自操作下体会下各个快捷键的实际用法。
+
+## Ctrl
+
+|快捷键|介绍|
+|:---------|:---------|
+|Ctrl + F|在当前文件进行文本查找 `(必备)` |
+|Ctrl + R|在当前文件进行文本替换 `(必备)` |
+|Ctrl + Z|撤销 `(必备)` |
+|Ctrl + Y|删除光标所在行 或 删除选中的行 `(必备)` |
+|Ctrl + X|剪切光标所在行 或 剪切选择内容|
+|Ctrl + C|复制光标所在行 或 复制选择内容|
+|Ctrl + D|复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 `(必备)` |
+|Ctrl + W|递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围 `(必备)` |
+|Ctrl + E|显示最近打开的文件记录列表|
+|Ctrl + N|根据输入的 **类名** 查找类文件|
+|Ctrl + G|在当前文件跳转到指定行处|
+|Ctrl + J|插入自定义动态代码模板|
+|Ctrl + P|方法参数提示显示|
+|Ctrl + Q|光标所在的变量 / 类名 / 方法名等上面(也可以在提示补充的时候按),显示文档内容|
+|Ctrl + U|前往当前光标所在的方法的父类的方法 / 接口定义|
+|Ctrl + B|进入光标所在的方法/变量的接口或是定义出,等效于 `Ctrl + 左键单击` |
+|Ctrl + K|版本控制提交项目,需要此项目有加入到版本控制才可用|
+|Ctrl + T|版本控制更新项目,需要此项目有加入到版本控制才可用|
+|Ctrl + H|显示当前类的层次结构|
+|Ctrl + O|选择可重写的方法|
+|Ctrl + I|选择可继承的方法|
+|Ctrl + \+|展开代码|
+|Ctrl + \-|折叠代码|
+|Ctrl + /|注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号 `(必备)` |
+|Ctrl + \[|移动光标到当前所在代码的花括号开始位置|
+|Ctrl + \]|移动光标到当前所在代码的花括号结束位置|
+|Ctrl + F1|在光标所在的错误代码出显示错误信息|
+|Ctrl + F3|调转到所选中的词的下一个引用位置|
+|Ctrl + F4|关闭当前编辑文件|
+|Ctrl + F8|在 Debug 模式下,切换断点|
+|Ctrl + F9|执行 Make Project 操作|
+|Ctrl + F11|选中文件 / 文件夹,使用助记符设定 / 取消书签|
+|Ctrl + F12|弹出当前文件结构层,可以在弹出的层上直接输入,进行筛选|
+|Ctrl + Tab|编辑窗口切换,如果在切换的过程又加按上delete,则是关闭对应选中的窗口|
+|Ctrl + Enter|智能分隔行|
+|Ctrl + End|跳到文件尾|
+|Ctrl + Home|跳到文件头|
+|Ctrl + Space|基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 `Ctrl + 逗号` `(必备)` |
+|Ctrl + Delete|删除光标后面的单词或是中文句|
+|Ctrl + BackSpace|删除光标前面的单词或是中文句|
+|Ctrl + 1,2,3...9|定位到对应数值的书签位置|
+|Ctrl + 左键单击|在打开的文件标题上,弹出该文件路径|
+|Ctrl + 光标定位|按 Ctrl 不要松开,会显示光标所在的类信息摘要|
+|Ctrl + 左方向键|光标跳转到当前单词 / 中文句的左侧开头位置|
+|Ctrl + 右方向键|光标跳转到当前单词 / 中文句的右侧开头位置|
+|Ctrl + 前方向键|等效于鼠标滚轮向前效果|
+|Ctrl + 后方向键|等效于鼠标滚轮向后效果|
+
+## Alt
+
+|快捷键|介绍|
+|:---------|:---------|
+|Alt + \`|显示版本控制常用操作菜单弹出层|
+|Alt + Q|弹出一个提示,显示当前类的声明 / 上下文信息|
+|Alt + F1|显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择|
+|Alt + F2|对于前面页面,显示各类浏览器打开目标选择弹出层|
+|Alt + F3|选中文本,逐个往下查找相同文本,并高亮显示|
+|Alt + F7|查找光标所在的方法 / 变量 / 类被调用的地方|
+|Alt + F8|在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果|
+|Alt + Home|定位 / 显示到当前文件的 `Navigation Bar` |
+|Alt + Enter|IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同 `(必备)` |
+|Alt + Insert|代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等|
+|Alt + 左方向键|按左方向切换当前已打开的文件视图|
+|Alt + 右方向键|按右方向切换当前已打开的文件视图|
+|Alt + 前方向键|当前光标跳转到当前文件的前一个方法名位置|
+|Alt + 后方向键|当前光标跳转到当前文件的后一个方法名位置|
+|Alt + 1,2,3...9|显示对应数值的选项卡,其中 1 是 Project 用得最多|
+
+## Shift
+
+|快捷键|介绍|
+|:---------|:---------|
+|Shift + F1|如果有外部文档可以连接外部文档|
+|Shift + F2|跳转到上一个高亮错误 或 警告位置|
+|Shift + F3|在查找模式下,查找匹配上一个|
+|Shift + F6|对文件 / 文件夹 重命名|
+|Shift + F7|在 Debug 模式下,智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法|
+|Shift + F8|在 Debug 模式下,跳出|
+|Shift + F9|等效于点击工具栏的 `Debug` 按钮|
+|Shift + F10|等效于点击工具栏的 `Run` 按钮|
+|Shift + F11|弹出书签显示层|
+|Shift + Tab|取消缩进|
+|Shift + ESC|隐藏当前 或 最后一个激活的工具窗口|
+|Shift + End|选中光标到当前行尾位置|
+|Shift + Home|选中光标到当前行头位置|
+|Shift + Enter|开始新一行。光标所在行下空出一行,光标定位到新行位置|
+|Shift + 左键单击|在打开的文件名上按此快捷键,可以关闭当前打开文件|
+|Shift + 滚轮前后滚动|当前文件的横向滚动轴滚动|
+
+## Ctrl + Alt
+
+|快捷键|介绍|
+|:---------|:---------|
+|Ctrl + Alt + L|格式化代码,可以对当前文件和整个包目录使用 `(必备)` |
+|Ctrl + Alt + O|优化导入的类,可以对当前文件和整个包目录使用 `(必备)` |
+|Ctrl + Alt + I|光标所在行 或 选中部分进行自动代码缩进,有点类似格式化|
+|Ctrl + Alt + T|对选中的代码弹出环绕选项弹出层|
+|Ctrl + Alt + J|弹出模板选择窗口,讲选定的代码加入动态模板中|
+|Ctrl + Alt + H|调用层次|
+|Ctrl + Alt + B|在某个调用的方法名上使用会跳到具体的实现处,可以跳过接口|
+|Ctrl + Alt + V|快速引进变量|
+|Ctrl + Alt + Y|同步、刷新|
+|Ctrl + Alt + S|打开 IntelliJ IDEA 系统设置|
+|Ctrl + Alt + F7|显示使用的地方。寻找被该类或是变量被调用的地方,用弹出框的方式找出来|
+|Ctrl + Alt + F11|切换全屏模式|
+|Ctrl + Alt + Enter|光标所在行上空出一行,光标定位到新行|
+|Ctrl + Alt + Home|弹出跟当前文件有关联的文件弹出层|
+|Ctrl + Alt + Space|类名自动完成|
+|Ctrl + Alt + 左方向键|退回到上一个操作的地方 `(必备)` |
+|Ctrl + Alt + 右方向键|前进到上一个操作的地方 `(必备)` |
+|Ctrl + Alt + 前方向键|在查找模式下,跳到上个查找的文件|
+|Ctrl + Alt + 后方向键|在查找模式下,跳到下个查找的文件|
+
+## Ctrl + Shift
+
+|快捷键|介绍|
+|:---------|:---------|
+|Ctrl + Shift + F|根据输入内容查找整个项目 或 指定目录内文件 `(必备)` |
+|Ctrl + Shift + R|根据输入内容替换对应内容,范围为整个项目 或 指定目录内文件 `(必备)` |
+|Ctrl + Shift + J|自动将下一行合并到当前行末尾 `(必备)` |
+|Ctrl + Shift + Z|取消撤销 `(必备)` |
+|Ctrl + Shift + W|递进式取消选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展取消选中范围 `(必备)` |
+|Ctrl + Shift + N|通过文件名定位 / 打开文件 / 目录,打开目录需要在输入的内容后面多加一个正斜杠 `(必备)` |
+|Ctrl + Shift + U|对选中的代码进行大 / 小写轮流转换 `(必备)` |
+|Ctrl + Shift + T|对当前类生成单元测试类,如果已经存在的单元测试类则可以进行选择|
+|Ctrl + Shift + C|复制当前文件磁盘路径到剪贴板|
+|Ctrl + Shift + V|弹出缓存的最近拷贝的内容管理器弹出层|
+|Ctrl + Shift + E|显示最近修改的文件列表的弹出层|
+|Ctrl + Shift + H|显示方法层次结构|
+|Ctrl + Shift + B|跳转到类型声明处|
+|Ctrl + Shift + I|快速查看光标所在的方法 或 类的定义|
+|Ctrl + Shift + A|查找动作 / 设置|
+|Ctrl + Shift + /|代码块注释 `(必备)` |
+|Ctrl + Shift + \[|选中从光标所在位置到它的顶部中括号位置|
+|Ctrl + Shift + \]|选中从光标所在位置到它的底部中括号位置|
+|Ctrl + Shift + \+|展开所有代码|
+|Ctrl + Shift + \-|折叠所有代码|
+|Ctrl + Shift + F7|高亮显示所有该选中文本,按Esc高亮消失|
+|Ctrl + Shift + F8|在 Debug 模式下,指定断点条件|
+|Ctrl + Shift + F9|编译选中的文件 / 包 / Module|
+|Ctrl + Shift + F12|编辑器最大化|
+|Ctrl + Shift + Space|智能代码提示|
+|Ctrl + Shift + Enter|自动结束代码,行末自动添加分号 `(必备)` |
+|Ctrl + Shift + Backspace|退回到上次修改的地方|
+|Ctrl + Shift + 1,2,3...9|快速添加指定数值的书签|
+|Ctrl + Shift + 左方向键|在代码文件上,光标跳转到当前单词 / 中文句的左侧开头位置,同时选中该单词 / 中文句|
+|Ctrl + Shift + 右方向键|在代码文件上,光标跳转到当前单词 / 中文句的右侧开头位置,同时选中该单词 / 中文句|
+|Ctrl + Shift + 左方向键|在光标焦点是在工具选项卡上,缩小选项卡区域|
+|Ctrl + Shift + 右方向键|在光标焦点是在工具选项卡上,扩大选项卡区域|
+|Ctrl + Shift + 前方向键|光标放在方法名上,将方法移动到上一个方法前面,调整方法排序|
+|Ctrl + Shift + 后方向键|光标放在方法名上,将方法移动到下一个方法前面,调整方法排序|
+
+## Alt + Shift
+
+|快捷键|介绍|
+|:---------|:---------|
+|Alt + Shift + N|选择 / 添加 task|
+|Alt + Shift + F|显示添加到收藏夹弹出层|
+|Alt + Shift + C|查看最近操作项目的变化情况列表|
+|Alt + Shift + F|添加到收藏夹|
+|Alt + Shift + I|查看项目当前文件|
+|Alt + Shift + F9|弹出 `Debug` 的可选择菜单|
+|Alt + Shift + F10|弹出 `Run` 的可选择菜单|
+|Alt + Shift + 左键双击|选择被双击的单词 / 中文句,按住不放,可以同时选择其他单词 / 中文句|
+|Alt + Shift + 前方向键|移动光标所在行向上移动|
+|Alt + Shift + 后方向键|移动光标所在行向下移动|
+
+## Ctrl + Shift + Alt
+
+|快捷键|介绍|
+|:---------|:---------|
+|Ctrl + Shift + Alt + V|无格式黏贴|
+|Ctrl + Shift + Alt + N|前往指定的变量 / 方法|
+|Ctrl + Shift + Alt + S|打开当前项目设置|
+|Ctrl + Shift + Alt + C|复制参考信息|
+
+## 其他
+
+|快捷键|介绍|
+|:---------|:---------|
+|F2|跳转到下一个高亮错误 或 警告位置 `(必备)` |
+|F3|在查找模式下,定位到下一个匹配处|
+|F4|编辑源|
+|F7|在 Debug 模式下,进入|
+|F8|在 Debug 模式下,跳过,进入下一步|
+|F9|在 Debug 模式下,恢复程序运行|
+|F11|添加书签|
+|F12|回到前一个工具窗口|
+|Tab|缩进|
+|ESC|从工具窗口进入代码文件窗口|
+|连按两次Shift|弹出 `Search Everywhere` 弹出层|
+
+## 官网快捷键资料
+> * Windows / Linux:
+> * Mac OS X:
+
+## 第三方快捷键资料
+> * 来自 eta02913:
+
+## 快捷键修改
+
+![修改快捷键](images/n-a-keymap-setting-1.jpg)
+
+> * 按 `Ctrl + Alt + S` 弹出 IDE 设置,如上图选择左侧的 `Keymap`。
+> * IntelliJ IDEA 支持两种方式来筛选我们要找的快捷键,一种是上图标注 1 所示的,通过输入快捷键描述内容;一种是上图标注 2 所示的,通过 **按** 指定快捷键快捷键,这里需要再次强调的是,这个输入框是自动监听你当前按下的按键,而不是用来输入的。
+> * 上图标注 3 所示,初安装的 IntelliJ IDEA 使用的是 `Default` 的快捷键模板,IntelliJ IDEA 默认的快捷键模板都是不可修改的。如果你直接修改,当前这个位置 IntelliJ IDEA 会自动变成 `Default Copy`,建议你养成习惯,修改之前先点击 `Copy`,拷贝一套快捷键模板,然后输入自己的命名。
+
+![修改快捷键](images/n-a-keymap-setting-2.jpg)
+
+> * IntelliJ IDEA 是支持一个操作命令同时设置多个快捷键组合,就如上图的 `Backspace`,同时支持 `Backspace` 和 `Shift + Backspace` 两组快捷键。
+> * 要修改某个快捷键,选中快捷键介绍内容,右键,就会弹出如上图标注 1 所示操作选择。
+> * 命令 `Add Keyboard Shortcut` 用来添加新纯键盘快捷键组合。
+> * 命令 `Add Mouse Shortcut` 用来添加新 `键盘 + 鼠标` 快捷键组合,比如设置 `Ctrl + 左键单击` 这类快捷组合。其中在弹出的添加面板中 `Click Pad` 是用来监听当前鼠标是左键单击还是右键单击。
+> * 命令 `Add Abbreviation` 根据 IntelliJ IDEA 的版本文档解释,添加简称主要是为了方便 `Search Everywhere` 中使用,但是我尝试之后发现没办法根据我设置的简称搜索,暂时无法了解其作用。
+> * 命令 `Remove 快捷键` 移出当前操作命令已设置的快捷键组合,由于 IntelliJ IDEA 默认就占用了很多快捷键组合,所以如果你要修改某个快捷键,建议还是删除掉旧的。
+
+![修改快捷键](images/n-a-keymap-setting-3.jpg)
+
+> * IntelliJ IDEA 对其他 IDE 用户很友好,比如如上图对于其他主流的 IDE,快捷键上已经默认了有其过度快捷键模板了,但是我还是建议你专心使用 IntelliJ IDEA 的默认。
+
+## 其他
+
+![vim插件推荐](images/n-b-ideavim-1.jpg)
+
+> * 如果你是一个 Vim 粉,IntelliJ IDEA 也为你准备了一个方案:如上图安装 IdeaVim 插件即可。
\ No newline at end of file
diff --git a/make-introduce.md b/make-introduce.md
new file mode 100644
index 00000000..566bad4f
--- /dev/null
+++ b/make-introduce.md
@@ -0,0 +1,47 @@
+# IntelliJ IDEA 编译方式介绍
+
+## 编译方式介绍
+
+相比较于 Eclipse 的实时自动编译,IntelliJ IDEA 的编译更加手动化,虽然 IntelliJ IDEA 也支持通过设置开启实时编译,但是不建议,因为太占资源了。IntelliJ IDEA 编译方式除了手工点击编译按钮进行编译之外,还有就是在容器运行之前配置上一个编译事件,先编译后运行。默认下 IntelliJ IDEA 也都是这样的设置,所以实际开发中你也不用太注意编译这件事。虽然 IntelliJ IDEA 没有实时编译,但是对于代码检查完全是没有影响。但是多个类之间的关联关系还是要等 Make 或 Rebuild 触发的时候才会做相关检查的。
+
+在 IntelliJ IDEA 里,编译方式一共有三种:
+> * Compile:对选定的目标(Java 类文件),进行强制性编译,不管目标是否是被修改过。
+> * Rebuild:对选定的目标(Project),进行强制性编译,不管目标是否是被修改过,由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。
+> * Make:使用最多的编译操作。对选定的目标(Project 或 Module)进行编译,但只编译有修改过的文件,没有修改过的文件不会编译,这样平时开发大型项目才不会浪费时间在编译过程中。
+
+## 编译触发按钮
+
+![IntelliJ IDEA 编译触发按钮](images/xiii-a-make-introduce-1.jpg)
+
+> * 如上图标注 1 所示,Compile 的操作有:`Compile` 指定类
+> * 如上图标注 1 所示,Rebuild 的操作有:`Rebuild Project`
+> * 如上图标注 1 所示,Make 的操作有:`Make Project`、`Make Module`
+
+## 运行之前的编译
+
+![IntelliJ IDEA 运行之前的编译](images/xiii-b-befour-launch-1.jpg)
+
+> * 如上图所示,IntelliJ IDEA 默认在运行 JUnit 之前会先进行 `Make` 操作。
+
+![IntelliJ IDEA 运行之前的编译](images/xiii-b-befour-launch-2.jpg)
+
+> * 如上图所示,IntelliJ IDEA 默认在运行 tomcat 之前会先进行 `Make` 操作。
+
+## 编译器的设置和选择
+
+![编译器的设置和选择](images/xiii-c-compiler-setting-1.jpg)
+
+> * 上图标注 1 所示,也是我们本文前面讲的,IntelliJ IDEA 是支持自动编译的,默认是不开启的,也建议不用开启,原因前面已经说了。
+> * 上图标注 2 所示,设置编译 `heap` 大小,默认是 `700`,建议使用 64 位的用户,在内存足够的情况下,建议改为 `1500` 或以上。如果你在编译的时候出错,报:`OutOfMemoryError`,一般也是要来改这个地方。
+> * 上图标注 3 所示,还可以设置编译时的 `VM` 参数,这个你可以根据需求进行设置,一般人是用不上的。
+
+![编译器的设置和选择](images/xiii-c-compiler-setting-2.jpg)
+
+> * 如上图标注 1 所示,可以添加目录 或 文件进行编译排除。
+> * 在项目中,如果有任何一个可编译的文件无法编译通过,则 IntelliJ IDEA 是无法运行起来的,必须等你全部问题解决,编译通过之后才可运行。但是可能开发过程中,某一个包目录的文件编译无法通过,但是我们又不急着改,那我们就可以考虑把该包加入到排除编译列表中,则项目就可以运行起来。
+
+![编译器的设置和选择](images/xiii-c-compiler-setting-3.gif)
+
+> * 如上图动态 Gif 所示,IntelliJ IDEA 支持常见的几种编译器:`Javac`、`Eclipse`、`Ajc` 等。默认是 `Javac`,也推荐使用 `Javac`。
+> * `Project bytecode version` 针对项目字节码编译版本,一般选择的是当前项目主 JDK 的版本。
+> * `Per-module bytecode version` 可以针对 `Project` 下各个 `Module` 的特殊需求单独设置不同的 `bytecode version`,前提是电脑上必须有安装对应的 JDK 版本。
\ No newline at end of file
diff --git a/plugins-settings.md b/plugins-settings.md
new file mode 100644
index 00000000..9d44e91c
--- /dev/null
+++ b/plugins-settings.md
@@ -0,0 +1,52 @@
+# 插件的使用
+
+## 插件的设置
+
+在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都是通过插件的方式来实现的,只是 IntelliJ IDEA 本身就是它自己的插件平台最大的开发者而已,开发了很多优秀的插件。
+
+> * 官网插件库:
+
+![插件的设置](images/xx-a-plugins-settings-1.jpg)
+
+> * 如上图标注 1 所示,IntelliJ IDEA 对插件进行了很好的分类:
+>> * `All plugins` 显示所有插件。
+>> * `Enabled` 显示当前所有已经启用的插件。
+>> * `Disabled` 显示当期那所有已经禁用的插件。
+>> * `Bundled` 显示所有 IntelliJ IDEA 自带的插件。
+>> * `Custom` 显示所有我们自行安装的插件,如果你自己装了很多次插件的话,这个选项会用得比较多。
+> * 如上图标注 2 所示,启用的插件是被勾选的,如果要禁用一个插件,去掉勾选即可。
+> * 如上图标注 3 所示,弹出 IntelliJ IDEA 公司自行开发的插件仓库列表,供下载安装。
+> * 如上图标注 4 所示,弹出插件仓库中所有插件列表供下载安装。
+> * 如上图标注 5 所示,浏览本地的插件文件进行安装,而不是从服务器上下载并安装。
+> * 需要严重注意的是:在国内的网络下,很经常出现显示不了插件列表,或是显示了插件列表,无法下载完成安装。这时候请自行开VPN,一般都可以得到解决。
+
+![插件的设置](images/xx-a-plugins-settings-2.jpg)
+
+![插件的设置](images/xx-a-plugins-settings-3.jpg)
+
+> * 如上图红圈所示,如果 IntelliJ IDEA 打开一个它可以识别并且支持的文件类型,它会提示你它有对应的插件进行支持,你可以安装对应的插件来加以兼容此类文件。
+
+## 插件的安装
+
+![插件的安装](images/xx-b-plugins-install-1.gif)
+
+> * 如上图 Gif 演示,在线安装 IntelliJ IDEA 插件库中的插件。
+
+![插件的安装](images/xx-b-plugins-install-2.gif)
+
+> * 如上图 Gif 演示,离线安装本地插件文件。
+
+## 插件推荐
+
+|插件名称 |插件介绍 |官网地址 |
+|:-----------------|:----------|:--------------|
+|Key promoter|快捷键提示||
+|CamelCase|驼峰式命名和下划线命名交替变化||
+|CheckStyle-IDEA|代码样式检查||
+|FindBugs-IDEA|代码 Bug 检查||
+|Statistic|代码统计||
+|JRebel Plugin|热部署||
+|CodeGlance|在编辑代码做右侧,显示一块代码小地图||
+|Eclipse Code Formatter|使用 Eclipse 的代码格式化风格,在一个团队中如果公司有规定格式化风格,这个可以使用。||
+|GsonFormat|把 JSON 字符串直接实例化成类||
+
diff --git a/project-composition-introduce.md b/project-composition-introduce.md
new file mode 100644
index 00000000..ebe163a9
--- /dev/null
+++ b/project-composition-introduce.md
@@ -0,0 +1,100 @@
+# IntelliJ IDEA 项目相关的几个重要概念介绍
+
+## 必备材料介绍
+
+> * IntelliJ IDEA 对其他 IDE 转过来的用户有特别优待,对其专门整理了非常棒的资料,还请其他 IDE 过来的用户抽时间查看,会有很大帮助:
+>> * Eclipse 用户可以看:
+>> * NetBeans 用户可以看:
+
+## Project 和 Module 介绍
+
+这两个概念是 IntelliJ IDEA 的必懂知识点之一,请务必要学会。
+
+如果你是 Eclipse 用户,并且已经看了上面给的链接,那 IntelliJ IDEA 首先告诉你一个非常重要的事情:IntelliJ IDEA 没有类似 Eclipse 工作空间(workspace)的概念的。很多从 Eclipse 转过来的人总是下意识地要再同一个窗口管理 n 个项目,这在 IntelliJ IDEA 是无法得到。IntelliJ IDEA 提供的体验是:一个 Project 打开一个 Window 窗口。
+
+对于 Project,IntelliJ IDEA 是这样解释的:
+
+> * Whatever you do in IntelliJ IDEA, you do that in the context of a project. A project is an organizational unit that represents a complete software solution. It serves as a basis for coding assistance, bulk refactoring, coding style consistency, etc.
+> * Your finished product may be decomposed into a series of discrete, isolated modules, but it's a project definition that brings them together and ties them into a greater whole.
+> * Projects don't themselves contain development artifacts such as source code, build scripts, or documentation. They are the highest level of organization in the IDE, and they define project-wide settings as well as collections of what IntelliJ IDEA refers to as modules and libraries.
+>> * 链接地址:
+
+对于 Module,IntelliJ IDEA 是这样解释的:
+
+> * A module is a discrete unit of functionality which you can compile, run, test and debug independently.
+> * Modules contain everything that is required for their specific tasks: source code, build scripts, unit tests, deployment descriptors, and documentation. However, modules exist and are functional only in the context of a project.
+> * Configuration information for a module is stored in a .iml module file. By default, such a file is located in the module's content root folder.
+> * Development teams, normally, share the .iml module files through version control.
+>> * 链接地址:
+
+通过上面的介绍我们知道,在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目结构都是类似这种多 Module 结构,这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间应该都是处于同一个项目业务情况下的模块,彼此之间是有不可分割的业务关系的。
+
+所以我们现在总结:一个 `Project` 是由一个或多个 `Module` 组成,模块之间尽量是处在同一个项目业务的的情况下,彼此之间互相依赖关联。这里用的是 `尽量`,因为 IntelliJ IDEA 的 Project 是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范等类型的效果,也许我们可以简单地理解为就是一个单纯的目录,只是这个目录命名上必须有其代表性的意义。
+
+下面我们以著名的 `spring-framework` 项目为例介绍多 Module 的结构的:
+
+> * 项目主页::
+> * 该项目的 `Project` 命名是:spring-framework。该目录主要作用为各个 `Module` 的顶层目录进行约束,告诉协同者,这个目录下都是 `spring-framework` 相关的,我绝不对放 Android 相关源码、文档、文件在上面的。该目录并不是以一个实际性的目录来提现的,所以你访问主页是看不到的,但是当你 `checkout` 的时候,你必须为这个项目命名,至于命名默认就是 `spring-framework`。
+> * 该 `Project` 下有二十来个 `Module`,各个 `Module` 的命名也是有含义的,比如:`spring-core`、`spring-jdbc`、`spring-jms`、`spring-orm`、`spring-web`、`spring-webmvc` 等等,我们通过这些命名也能清楚地知道他们要表达的含义,这些 Module 下也都各自有 `src` 编码目录,可以自行编码和构建。
+
+![Project 和 Module 介绍](images/xiv-a-project-and-module-introduce-1.gif)
+
+> * 相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 创建项目的时候,默认就是单 Module 的结构的。
+> * 如上图 Gif 图演示,在输入 `Project name` 的时候,`Module name` 和 `Module file Location` 自动进行改变,同时 `Project location` 和 `Module file Location` 完全一样,这也就表示,Project 目录和 Module 目录是同一个,所以此时 Project 目录下就会有 `src` 目录,但是我们应该明白其本质还是 Module 的目录。
+
+关于 IntelliJ IDEA 的 Project 和 Module 终于解释清楚了,但是由于 IntelliJ IDEA 官网上又有一段话对此解释得不够好,特别是对 Eclipse 用户来讲:,其中有这样两句话:
+
+> * An Eclipse workspace is similar to a project in IntelliJ IDEA
+> * An Eclipse project maps to a module in IntelliJ IDEA
+
+你可以把 IntelliJ IDEA 的 `Project` 当做 `workspace` 使用,IntelliJ IDEA 也是支持的,但是就像我们前面解释的那么那么多,这样是非常不符合其初衷的,所以请别把这段话当做教义去学习。对此 zeroturnaround 的大牛也有针对此进行了说明:
+
+## SDK(Software Development Kit) 介绍
+
+![SDK 介绍](images/xiv-b-sdk-introduce-1.jpg)
+
+> * 按 `Ctrl + Shift + Alt + S` 弹出项目结构设置区,如上图所示。
+> * 如上图标注 1 所示,IntelliJ IDEA 支持 6 种 SDK。最常用的就是 `JDK` 和 `Android SDK`,其中在创建 `Android SDK` 的时候如果你没有先配置一个 `JDK` 的话,IntelliJ IDEA 则会提示你要先配置一个 `JDK`,然后才能配置 `Android SDK`。
+> * 如上图标注 2 所示,下拉会展示已经创建的所有 SDK,可以很方便地不同 SDK 中切换。在开发 Java 项目过程中,由于 IntelliJ IDEA 支持管理多个 `JDK`,所以你完全不用担心你系统上不同项目需要不同 `JDK`。
+
+![SDK 介绍](images/xiv-b-sdk-introduce-2.jpg)
+
+> * 如上图标注 1 所示,`SDKs` 为 SDK 的统一管理处。
+> * 如上图标注 2 所示,加号可以添加新 SDK,支持的类型如标注 3 所示;减号可以删除光标所选的 SDK。
+> * 官网介绍:
+
+## language level 介绍
+
+其他 IDE 没有看到类似 `language level` 的设置,所以这个功能应该算是 IntelliJ IDEA 特有的,可是 IntelliJ IDEA 官网也没有专门介绍 `language level` 的地方,也许 IntelliJ IDEA 认为这个知识点属于 JDK 范畴所以没加以介绍吧。所以这里主要我对此的一些理解。我们应该知道 Java JDK 在每个新版本都会有其新特性,而新版本一般也会向下兼容旧版本的特性,IntelliJ IDEA 是对这些 JDK 的新特性是这样介绍的:
+
+> * JDK 6 的新特性:@Override in interfaces
+> * JDK 7 的新特性:Diamonds,ARM,multi-catch etc.
+> * JDK 8 的新特性:Lambdas,type annotation etc.
+> * JDK 9 的新特性:Jigsaw project etc.
+>> * `etc. == et cetera == and so on == 等等`
+
+![language level 介绍](images/xiv-c-language-level-introduce-1.jpg)
+
+![language level 介绍](images/xiv-c-language-level-introduce-2.jpg)
+
+> * 如上第一张图标注 1,使用的是 JDK 7,显示的 `SDK default` 为 `7 - Diamonds,ARM,multi-catch etc.`
+> * 如上第二张图标注 1,使用的是 JDK 8,显示的 `SDK default` 为 `8 - Lambdas,type annotation etc.`
+
+当我们使用 JDK 8 的时候,我们只能向下兼容 JDK 8 及其以下的特性,所以只能选择 8 及其以下的 `language level`。所以当我们项目使用的是 JDK 8,但是代码却没有使用 JDK 8 的新特性,最多使用了 JDK 7 的特性的时候我们可以选择 `7 - Diamonds,ARM,multi-catch etc.`。
+
+对此我们总结 `language level`:限定项目编译检查时最低要求的 JDK 特性。
+
+现在假设我们有一个项目代码使用的 JDK 8 新特性:`lambda` 语法,但是 JDK 选择的却是 JDK 7,即使 `language level` 选择了 `8 - Lambdas,type annotation etc.`,也是没有多大意义的,一样会编译报错。
+
+## Module 下的 SDK 和 language level
+
+对于大型项目,各个 Module 用到的 `SDK` 和 `language level` 很有可能是各不一样的,IntelliJ IDEA 对此也进行了支持。
+
+![Module 下的 SDK 和 language level](images/xiv-d-module-setting-1.jpg)
+
+> * 如上图标注 1 所示,可以针对 Module 选择其他 SDK,默认选择的是 `Project SDK`
+
+![Module 下的 SDK 和 language level](images/xiv-d-module-setting-2.jpg)
+
+> * 如上图标注 1 所示,可以针对 Module 选择其他 `language level`,默认选择的是 `Project language level`
+
diff --git a/project-settings.md b/project-settings.md
new file mode 100644
index 00000000..2355a302
--- /dev/null
+++ b/project-settings.md
@@ -0,0 +1,61 @@
+# Hello World 项目创建与项目配置文件介绍
+
+## Hello World 项目创建
+
+![Hello World 项目创建](images/xv-a-project-create-1.jpg)
+
+> * 如上图标注 1 所示,点击 `Create New Project` 进入向导式创建项目
+
+![Hello World 项目创建](images/xv-a-project-create-2.jpg)
+
+> * 如上图标注 1 所示,如果此时 IntelliJ IDEA 还没有配置任何一个 SDK 的话,可以点击 `New...` 先进行 SDK 的配置。
+> * 如上图标注 2 所示,配置好 SDK 或选择好 SDK 之后,点击 `Next` 进入下一步。
+
+![Hello World 项目创建](images/xv-a-project-create-3.jpg)
+
+> * 如上图标注 1 所示,可以选择模板快速创建项目。
+>> * `Command Line App` 会自动创建一个带有 main 方法的类。
+>> * `Java Hello World` 会自动创建一个带有 main 方法的并且会打印输出 Hello World 的类。
+> * 我们这里不勾选使用模板,而是手工创建,所以我们点击上图标注 2,进入下一步。
+
+![Hello World 项目创建](images/xv-a-project-create-4.jpg)
+
+> * 如上图标注 1 所示,默认 `More Settings` 是没有展开的,点击此处可以展开更多细节的信息。
+> * 如上图标注 2 所示,IntelliJ IDEA 的项目格式文件主要提供两种方式
+>> * `.idea (directory based)` 创建项目的时候自动创建一个 `.idea` 的项目配置目录来保存项目的配置信息。这是默认选项。
+>> * `.ipr (file based)` 创建项目的时候自动创建一个 `.ipr` 的项目配置文件来保存项目的配置信息。
+> * 需要特别注意的是,我这边默认创建的项目编码是 GBK,而如果你需要 UTF-8 的话,修改编码的方式请看第 10 讲。
+
+![Hello World 项目创建](images/xv-a-project-create-5.jpg)
+
+> * 如上图标注 1 所示,根据第 11 讲我们知道,`src` 目录为蓝色表示 `Source root`,我们可以再此目录下创建包和类。
+> * 如上图标注 2 所示,由于该项目使用的是 JDK 7,所以项目是基于 JDK 7,我们可以调用 JDK 7 中的类。
+
+![Hello World 项目创建](images/xv-a-project-create-6.jpg)
+
+> * 如上图标注 1,2 所示,在 `src` 目录右键,选择 `New` 创建包目录。
+
+![Hello World 项目创建](images/xv-a-project-create-7.jpg)
+
+> * 如上图标注 1 所示,在没有文件的情况下包目录默认是连在一起的,这不方便看目录层级关系。
+> * 如上图标注 箭头 所示,点击此齿轮,在弹出的菜单中去掉选择标注 2 选项:`Compact Empty Middle Packages`。
+
+![Hello World 项目创建](images/xv-a-project-create-8.jpg)
+
+> * 如上图所示,在包下可以直接创建 `Class`、`Interface`、`Enum`、`Annotation` 等常见类型文件。
+
+![Hello World 项目创建](images/xv-a-project-create-9.gif)
+
+> * 如上图 Gif 演示,写一个 main 方法,打印输出 Hello world。
+
+![Hello World 项目创建](images/xv-a-project-create-10.gif)
+
+> * 如上图 Gif 演示,运行 main 方法,打印输出 Hello world。
+
+## 项目配置文件介绍
+
+![项目配置文件介绍](images/xv-b-project-introduce-1.jpg)
+
+> * 如上图标注 1 所示,`.idea` 即为 `Project` 的配置文件目录。
+> * 如上图标注 2 所示,`.iml` 即为 `Module` 的配置文件目录。
+> * 通过上面的了解我们也知道 IntelliJ IDEA 项目的配置变动都是以这些 XML 文件的方式来表现的,所以我们也可以通过了解这些 XML 文件来了解 IntelliJ IDEA 的一些配置。也因为此特性,所以如果在项目协同中,我们要保证所有的项目配置一致,就可以考虑把这些配置文件上传到版本控制中。如果把这些文件加入到版本控制之后,那又有一点是需要考虑的,那就是协同者 Checkout 项目下来之后,按自己的需求进行项目配置的之后,项目的 XML 文件也会跟着变化。此时协同者的这些变化的文件就不应该再上传到版本控制中。至于如何更好地控制这些不想随时提交的文件,在接下来的版本控制专讲中会进行详细讲解。
\ No newline at end of file
diff --git a/theme-settings.md b/theme-settings.md
new file mode 100644
index 00000000..be1c94dd
--- /dev/null
+++ b/theme-settings.md
@@ -0,0 +1,87 @@
+# IntelliJ IDEA 主题、字体、编辑区主题、文件编码修改
+
+## 主题修改
+
+![主题修改](images/x-a-theme-setting-1.jpg)
+
+> * 上图标注 1 所示为 IntelliJ IDEA 修改主题的地方,在 Windows 系统上 IntelliJ IDEA 默认提供的主题有四套:`Darcula`、`IntelliJ`、`Windows`、`Alloy. IDEA Theme`。除了 `Darcula` 是黑色主题,其他三套都是以白色为背景的。
+> * 其他操作系统上不一定会也有四套主题的,主题的选择上大家根据自己喜好即可。改变主题需要重启 IntelliJ IDEA 方可看到效果。
+
+## 字体修改
+
+### 主题字体修改
+
+![主题字体修改](images/x-b-font-setting-1.jpg)
+
+> * 如上图标注 1 所示,IntelliJ IDEA 主题字体的修改要先勾选 `Override default fonts by` 。默认 IntelliJ IDEA 是不推荐修改的,但是由于字体是有分包含中文和不包含中文之分的,一般使用英文的国家是不需要额外担心乱码问题的,而我们需要。
+> * 字体的审美上每个人不一样,但是如上一段说的,这里的自提修改是需要知道一个前提的,那就是你选择的那个字体必须含有中文,比如微软雅黑和宋体这类是包含中文的,而 `Courier New` 和 `Monaco` 这类只是单纯的英文字体。
+> * 如果你选择的字体不包含中文,那可能会在很多位置上出现类似 `口口口口口` 这样的乱码问题,比如文件名含有中文、字体是中文名字的都会变成 `口口口口口`。
+> * 在修改 IntelliJ IDEA 的主题字体的时候,不建议把自提调成很大,因为很多人遇到这样一种情况:显示器分辨率低,主题字体又大,在 IntelliJ IDEA 的某些操作的工具菜单、右键菜单选项中部分选项超出了分辨率显示范围,没办法被选中。当然了,如果你一定要把字体改大,又不用大分辨率显示器,那可以通过 IntelliJ IDEA 的 `Menus and Toolbars` 删除部分你认为用不到的菜单,但是一般不建议这样做。
+> * 还需要特别注意的时候,如果你是开着IntelliJ IDEA的时候,新装了一个字体的话,那必须重启IntelliJ IDEA之后才能在下拉列表找到新装的字体。
+
+### 代码编辑字体修改
+
+![代码编辑字体修改](images/x-b-font-setting-2.jpg)
+
+> * 如上图标注 1 所示,默认 IntelliJ IDEA 是不能直接在默认的代码模板上修改字体的,需要先 `Save As` 一份出来,然后才可以修改。这种设计在 IntelliJ IDEA 其他很多设置也是如此的,所以如果你还看到类似有 `Copy`、`Save As` 这类选项的按钮就要想到是此设计思想。
+> * 如上图标注 2 所示,勾选的 `Show only monospaced fonts` 表示筛选显示系统上的等宽字体。由于 Windows 系统上等宽字体并不多,勾选此选项出现的下拉字体可选择就很少。取消勾选之后,就可以显示系统上所有已安装的字体。
+> * 如上图标注 3 所示,其中编码字体有第一字体(`Primary font`) 和 第二字体(`Secondary font`)之分。当有些字符在第一字体支持不了的时候,会去使用第二字体进行支持。
+> * 我个人习惯上:英文字体使用 `Monaco`,由于此字体不支持中文,所以我把这个设置为第一字体,第二字体使用 `Yahei Consolas Hybrid` 进行支持,该字体含有中文。这两个字体都不是系统自带的,需要自行下载安装。
+> * 如果你的第一字体不包含中文的话,第二字体包含中文,那在有些地方也还是会出现 `口口口口口` 这类问题,比如 `Ctrl + Shift + N` 进行查找文件的时候,如果你输入中文也会变成 `口口口口口` ,我个人文件名为中文的不多,所以就容忍了这种情况。如果你不愿意容忍这种情况,那还是回到最开始的要求:第一字体包含中文。
+
+### 控制台输出字体修改
+
+![控制台输出字体修改](images/x-b-font-setting-3.jpg)
+
+> * 如上图为控制台输出内容字体修改,有很多 IntelliJ IDEA 新人在做输出的时候出现乱码原因就是因为没有在这里进行设置。
+> * *控制台输出字体* 修改的原理跟 *代码编辑字体修改* 是一样的,所以这里不进行讲解。
+
+## 编辑区主题修改
+
+### 编辑区主题介绍
+
+![编辑区主题介绍](images/x-c-code-theme-setting-1.jpg)
+
+> * 编辑区主题,也就是代码书写区的主题修改。基本上大家在 `General` 上都有对此进行小修小改,我下面也主要介绍下我个人在 `General` 上常修改的一些地方,其他特性的颜色修改我一般默认,但是修改方法原理一样。
+> * 如上图红圈下拉所示,展示的是我当前电脑可以选择的编辑区主题。
+> * 对于编辑区的主题,也有人制作成模板在网络上提供下载。这里主要介绍两个站点:
+>> * ,主要提供 jar 文件下载。
+>> * ,主要提供 xml 和 icl 文件下载。
+>> * 对应文件如何安装请查看网站对应的 `Help` 页面,都有详细说明的。
+
+### 编辑区主题细节修改
+
+![编辑区主题细节修改](images/x-c-code-theme-setting-2.jpg)
+
+> * 上图标注 1 为可修改的通用细节内容
+> * 上图标注 2 为可修改属性,其中并不是每个细节都可以修改所有属性的。比如细节:`Default text` 是可以勾选 `Bold`,而 `Caret row` 则是无法勾选 `Bold`,因为只有文本才有加粗的属性需求。
+> * 上图标注 3 为修改后的预览区,预览区是实时动态展示的。
+> * 在 `General` 区,我常修改的有:
+>> * `Default text`,指的是默认代码文本,我一般会修改其 `Background` 属性。
+>> * `Caret row`,指的是光标所在行,我一般会修改其 `Background` 属性。
+>> * `Vertical indent guide`,指的是垂直缩进线,我一般会修改其 `Foreground` 属性。
+>> * `Identifier under caret`,指的是光标所在位置的相同标识符呈现什么效果,我一般会修改其 `Background` 属性。
+>> * `Text search result`,指的是在查找模式下,匹配字符的样式,我一般会修改其 `Background` 属性。
+
+## 文件编码修改
+
+![文件编码修改](images/x-d-encoding-setting-1.jpg)
+
+> * 上图标注 1 所示,IDE 的编码默认是 `UTF-8`,`Project Encoding` 虽然默认是 `GBK`,但是一般我都建议修改为 `UTF-8`。
+> * 上图标注 2 所示,IntelliJ IDEA 可以对 `Properties` 文件进行专门的编码设置,一般也建议改为 `UTF-8`,其中有一个重点就是属性 `Transparent native-to-ascii conversion`,
+> * 上图标注 3 所示,对于 `Properties` 文件,重要属性 `Transparent native-to-ascii conversion` 主要用于转换 `ascii`,一般都要勾选,不然 `Properties` 文件中的注释显示的都不会是中文。
+> * 上图标注 4 所示,IntelliJ IDEA 除了支持对整个 Project 设置编码之外,还支持对目录、文件进行编码设置。如果你要对目录进行编码设置的话,可能会出现需要 `Convert` 编码的弹出操作选择,**强烈建议** 在转换之前做好文件备份,不然可能出现转换过程变成乱码,无法还原。
+
+![文件编码修改](images/x-d-encoding-setting-2.gif)
+
+> * 如上图演示,对单独文件的编码修改还可以点击右下角的编码设置区。如果代码内容中包含中文,则会弹出演示中的操作选择。
+>> * `Reload` 表示使用新编码重新加载,新编码不会保存到文件中,重新打开此文件,旧编码是什么依旧还是什么。
+>> * `Convert` 表示使用新编码进行转换,新编码会保存到文件中,重新打开此文件,新编码是什么则是什么。
+>> * 含有中文的代码文件,`Convert` 之后可能会使中文变成乱码,所以在转换成请做好备份,不然可能出现转换过程变成乱码,无法还原。
+
+## 由于编码问题引起的编译错误
+
+> * 编译报错:`找不到符号`、`未结束的字符串文字` 等的解决办法:
+>> * 由于 UTF-8 编码文件有分 `有BOM` 和 `无BOM` 之分,默认情况下 IntelliJ IDEA 使用的编译器是 `javac`,而此编译只能编译 `无BOM` 的文件,有很多 Eclipse 用户在使用 IntelliJ IDEA 开发 Eclipse 项目的时候常常会遇到此问题。主要是因为 Eclipse 的编译器是 `Eclipse`,此编译器支持 `有BOM` 的文件编译。顾,解决办法是对于此文件进行 BOM 去除。
+>> * 批量去除 BOM,你可以 Google:`批量去除 BOM`、`批量转换无 BOM` 等关键字,网络上已有提供各种方案。
+>> * 除了通过去除 BOM 还有设置 IntelliJ IDEA 的编译器为 `Eclipse`,但是一般不建议这样做。
diff --git a/vcs-introduce.md b/vcs-introduce.md
new file mode 100644
index 00000000..f8dc8d50
--- /dev/null
+++ b/vcs-introduce.md
@@ -0,0 +1,129 @@
+# 版本控制的使用
+
+## IntelliJ IDEA 下的版本控制介绍
+
+这一章节放在这么靠前位置来讲是因为版本控制在我心目中的地位比后面的实战知识点都来得重要。不管是个人开发或是团队开发,版本控制都是可以很好地被使用的,目前我找不到任何开发者不使用版本控制的理由。而且对于 IDE 来讲,集成版本控制的本身就是它最大的亮点之一,很多开发者也是为此而使用它。
+
+在本章节中也会对 IntelliJ IDEA 的相关版本控制进行了介绍,会开始涉及到一些 IntelliJ IDEA 人性化设置,也希望你能从这一讲开始认识到 IntelliJ IDEA 的优雅。
+
+![IntelliJ IDEA 下的版本控制介绍](images/xvi-a-version-control-system-introduce-1.jpg)
+
+> * 很多人认为 IntelliJ IDEA 自带了 SVN 或是 Git 等版本控制工具,认为只要安装了 IntelliJ IDEA 就可以完全使用版本控制应有的功能。这完全是一种错误的解读,IntelliJ IDEA 是自带对这些版本控制工具的支持插件,但是该装什么版本控制客户端还是要照样装的。
+> * 如上图标注 1 所示,IntelliJ IDEA 对版本控制的支持是以插件化的方式来实现的。旗舰版默认支持目前主流的版本控制软件:CVS、Subversion(SVN)、Git、ClearCase、Mercurial、Perforce、TFS。又因为目前太多人使用 Github 进行协同或是项目版本管理,所以 IntelliJ IDEA 同时自带了 Github 插件,方便 Checkout 和管理你的 Github 项目。
+
+## SVN 的配置
+
+要在 IntelliJ IDEA 中使用 SVN,需要先安装 SVN 客户端或是 TortoiseSVN 这类图形化工具,Windows 系统这里推荐安装 TortoiseSVN,即使在不使用 IntelliJ IDEA 也可以方便管理我们的项目。
+
+SVN 主要使用的版本有 1.6、1.7、1.8,最新的是 1.9。推荐大家使用 1.8 的。如果你的项目使用的是 1.6 的版本,在安装 1.8 之后是可以直接对项目文件进行升级的,所以无需担心,也因此更加推荐大家使用 1.8。
+
+
+> * Subversion 官网下载:
+> * TortoiseSVN 官网下载:
+
+![SVN 的使用](images/xvi-b-version-control-system-svn-introduce-1.jpg)
+
+> * 如上图箭头所示,在安装 TortoiseSVN 的时候,默认 `command line client tools`,是不安装的,这里建议勾选上。
+
+![SVN 的使用](images/xvi-b-version-control-system-svn-introduce-2.jpg)
+
+> * 如上图标注 1 所示,勾选 `Use command line client`
+> * 如上图标注 2 所示,建议 svn 的路径自己根据安装后的路径进行选择,不然有时候 IntelliJ IDEA 无法识别到会报:`Cannot run program "svn"` 这类错误。
+> * 如上图标注 3 所示,当使用一段时间 SVN 以后,发现各种 SVN 相关问题无法解决,可以考虑点击此按钮进行清除一下缓存。
+
+根据目前的使用经验来看,IntelliJ IDEA 下 SVN 的使用经历并不算愉快,至少比 Git 不好用很多,经常遇到很多问题,所以这里也算是先给大家提个醒。如果紧急情况下 IntelliJ IDEA 无法更新、提交的时候,要记得使用 TortoiseSVN 来操作。
+
+## Git 的配置
+
+要在 IntelliJ IDEA 中使用 Git,需要先安装 Git 客户端,这里推荐安装官网版本。
+
+Git 主要的版本有 1.X、2.X,最新的是 2.X,使用版本随意,但是不要太新了,不然可能 IntelliJ IDEA 小旧版本会无法支持可能。
+
+> * Git 官网下载:
+> * TortoiseGit 官网下载:
+
+![Git 的使用](images/xvi-c-version-control-system-git-introduce-1.jpg)
+
+如上图标注 1 所示,确定好该路径下是否有对应的可执行文件。
+
+## Github 的配置和使用
+
+![Github 的使用](images/xvi-d-version-control-system-github-introduce-1.jpg)
+
+> * 如上图标注 1 所示,填写你的 Github 登录账号和密码,点击 `Test` 可以进行测试是否可以正确连上。
+
+![Github 的使用](images/xvi-d-version-control-system-github-introduce-2.jpg)
+
+> * 如上图标注 1 所示,支持直接从你当前登录的 Github 账号上 Checkout 项目。
+
+![Github 的使用](images/xvi-d-version-control-system-github-introduce-3.jpg)
+
+> * 如上图标注 1 所示,支持把当前本地项目分享到你的 Github 账号上。
+
+![Github 的使用](images/xvi-d-version-control-system-github-introduce-4.jpg)
+
+> * 如上图标注 1 所示,支持创建 `Gist`。Github 的 Gist 官网地址:
+
+
+## 版本控制主要操作按钮
+
+![版本控制主要操作按钮](images/xvi-e-version-control-system-operation-introduce-1.jpg)
+
+> * 如上图标注 1 所示,对目录进行右键弹出的菜单选项。
+
+![版本控制主要操作按钮](images/xvi-e-version-control-system-operation-introduce-2.jpg)
+
+> * 如上图标注 1 所示,对文件进行右键弹出的菜单选项。
+
+![版本控制主要操作按钮](images/xvi-e-version-control-system-operation-introduce-3.jpg)
+
+> * 如上图标注红圈所示,为工具栏上版本控制操作按钮,基本上大家也都是使用这里进行操作。
+>> * 第一个按钮:`Update Project` 更新项目。
+>> * 第二个按钮:`Commit changes` 提交项目上所有变化文件。点击这个按钮不会立马提交所有文件,而是先弹出一个被修改文件的一个汇总框,具体操作下面会有图片进行专门介绍。
+>> * 第三个按钮:`Compare with the Same Repository Version` 当前文件与服务器上该文件通版本的内容进行比较。如果当前编辑的文件没有修改,则是灰色不可点击。
+>> * 第四个按钮:`Show history` 显示当前文件的历史记录。
+>> * 第五个按钮:`Revert` 还原当前被修改的文件到违背修改的版本状态下。如果当前编辑的文件没有修改,则是灰色不可点击。
+
+![版本控制主要操作按钮](images/xvi-e-version-control-system-operation-introduce-4.jpg)
+
+> * 如上图标注 1 所示,菜单栏上的版本控制操作区。
+
+
+## 版本控制相关的常用设置说明
+
+![版本控制相关的常用设置说明](images/xvi-f-version-control-system-settings-introduce-1.jpg)
+
+> * 如上图标注 1 所示,当前项目使用的版本控制是 `Git`。如果你不愿意这个项目继续使用版本控制可以点击旁边的减号按钮,如果你要切换版本控制,可以点击 `Git`,会出现 IntelliJ IDEA 支持的各种版本控制选择列表,但是我们一般情况下一个项目不会有多个版本控制的。
+> * 如上图标注 2 所示,`Show directories with changed descendants` 表示子目录有文件被修改了,则该文件的所有上层目录都显示版本控制被概念的颜色。默认是不勾选的,我一般建议勾选此功能。
+
+![版本控制相关的常用设置说明](images/xvi-f-version-control-system-settings-introduce-2.jpg)
+
+> * 如上图标注 1 所示,`When files are created` 表示当有新文件放进项目中的时候 IntelliJ IDEA 做如何处理,默认是 `Show options before adding to version control` 表示弹出提示选项,让开发者决定这些新文件是加入到版本控制中还是不加入。如果不想弹出提示,则选择下面两个选项进行默认操作。
+> * 如上图标注 2 所示,`When files are deleted` 表示当有新文件在项目中被删除的时候 IntelliJ IDEA 做如何处理,默认是 `Show options before removing from version control` 表示弹出提示选项,让开发者决定这些被删除的是否从版本控制中删除。如果不想弹出提示,则选择下面两个选项进行默认操作。
+
+![版本控制相关的常用设置说明](images/xvi-f-version-control-system-settings-introduce-3.jpg)
+
+> * 如上图标注 1 所示,对于不想加入到版本控制的文件,可以添加要此忽略的列表中。但是如果已经加入到版本控制的文件使用此功能,则表示该文件 或 目录无法再使用版本控制相关的操作,比如提交、更新等。我个人使用过程中发现在 SVN 上此功能不太好用,Git 上是可以用的。
+
+![版本控制相关的常用设置说明](images/xvi-f-version-control-system-settings-introduce-4.jpg)
+
+> * 上图所示的弹出层就是本文上面说的 `Commit Changes` 点击后弹出的变动文件汇总弹出层。
+> * 如上图标注 1 所示,可以在文件上右键进行操作。
+>> * `Show Diff` 当前文件与服务器上该文件通版本的内容进行比较。
+>> * `Move to Another Changelist` 将选中的文件转移到其他的 `Change list` 中。`Change list` 是一个重要的概念,这里需要进行重点说明。很多时候,我们开发一个项目同时并发的任务可能有很多,每个任务涉及到的文件可能都是基于业务来讲的。所以就会存在一个这样的情况:我改了 30 个文件,其中 15 个文件是属于订单问题,剩下 15 个是会员问题,那我希望提交代码的时候是根据业务区分这些文件的,这样我填写 `Commit Message` 是好描述的,同时在文件多的情况下,我也好区分这些要提交的文件业务模块。所以我一般会把属于订单的 15 个文件转移到其他的 `Change list`中,先把专注点集中在 15 个会员问题的文件,先提交会员问题的 `Change list`,然后在提交订单会员的 `Change list`。我个人还有一种用法是把一些文件暂时不提交的文件转移到一个我指定的 `Change list`,等后面我觉得有必要提交了,再做提交操作,这样这些文件就不会干扰我当前修改的文件提交。总结下 `Change list` 的功能就是为了让你更好地管理你的版本控制文件,让你的专注点得到更好的集中,从而提供效率。
+>> * `Jump to Source` 打开并跳转到被选中。
+> * 如上图标注 2 所示,可以根据工具栏按钮进行操作,操作的对象会鼠标选中的文件,多选可以按 `Ctrl` 后不放,需要注意的是这个更前面的复选框是没有多大关系的。
+> * 如上图标注 3 所示,可以在提交前自动对被提交的文件进行一些操作事件(该项目使用的 Git,使用其他版本控制可能有些按钮有差异。):
+>> * `Reformat code` 格式化代码,如果是 Web 开发建议不要勾选,因为格式化 JSP 类文件,格式化效果不好。如果都是 Java 类则可以安心格式化。
+>> * `Rearrange code` 重新编排代码,IntelliJ IDEA 支持各种复杂的编排设置选项,这个会在后面说。设置好了编码功能之后,这里就可以尝试勾选这个进行自动编排。
+>> * `Optimize imports` 优化导入包,会在自动去掉没有使用的包。这个建议都勾选,这个只对 Java 类有作用,所以不用担心有副作用。
+>> * `Perform code analysis` 进行代码分析,这个建议不用在提交的时候处理,而是在开发完之后,要专门养成对代码进行分析的习惯。IntelliJ IDEA 集成了代码分析功能。
+>> * `Check TODO` 检查代码中的 `TODO`。`TODO` 功能后面也会有章节进行讲解,这里简单介绍:这是一个记录待办事项的功能。
+>> * `Cleanup` 清除下版本控制系统,去掉一些版本控制系统的错误信息,建议勾选。
+> * 如上图标注 4 所示,填写提交的信息。
+> * 如上图标注 5 所示,`Change list` 改变列表,这是一个下拉选项,说明我们可以切换不同的 `Change list`,提交不同的 `Change list` 文件。
+> * 如上图标注箭头所示,我们可以查看我们提交历史中使用的 `Commit Message`,有些时候,我们做得是同一个任务,但是需要提交多次,为了更好管理项目,建议是提交的 `Message` 是保持一致的。
+
+![版本控制相关的常用设置说明](images/xvi-f-version-control-system-settings-introduce-5.jpg)
+
+> * 如上图标注箭头所示,如果你使用的 Git,点击此位置可以切换分支和创建分支,以及合并、删除分支等操作。
\ No newline at end of file
diff --git a/windows-install.md b/windows-install.md
new file mode 100644
index 00000000..fd8491d1
--- /dev/null
+++ b/windows-install.md
@@ -0,0 +1,65 @@
+# Windows 系统下安装 IntelliJ IDEA
+
+## 1.系统要求
+
+> * 系统支持:Microsoft Windows 8 / 7 / Vista / 2003 / XP(每个系统版本的32位和64位都可以)
+> * JDK 版本:Oracle JDK 1.6 或以上
+> * 内存:最低要求1G,推荐2G以上
+> * 硬盘:最低要求2G
+> * 显示器:最低要求 1024 X 768 分辨率
+
+> * 更多信息可以阅读:https://www.jetbrains.com/idea/download/system_requirements.jsp?os=win
+
+## 2.首次安装
+
+> * IntelliJ IDEA 的安装是非常简单的,不需要做过多的选择,可以说简单到都是 `Next` 即可。
+
+![首次安装步骤截图](images/iii-a-first-install-1.jpg)
+
+![首次安装步骤截图](images/iii-a-first-install-2.jpg)
+
+![首次安装步骤截图](images/iii-a-first-install-3.jpg)
+
+![首次安装步骤截图](images/iii-a-first-install-4.jpg)
+
+> * 上图标记 1 表示在桌面上创建一个快捷图标,建议勾选上,方便我们在安装后定位 IntelliJ IDEA 安装目录。
+> * 上图标记 2 表示关联 Java 和 Groovy 文件,建议都不要勾选,正常我们会在 Windows 的文件系统上打开这类文件都是为了快速查阅文件里面的内容,如果用 IntelliJ IDEA 关联上之后,由于 IntelliJ IDEA 打开速度缓慢,这并不能方便我们查看。
+> * 建议在 Windows 系统上关联此类文件可以用 EmEditor、Notepad++ 这类轻便的编辑器。
+
+![首次安装步骤截图](images/iii-a-first-install-5.jpg)
+
+![首次安装步骤截图](images/iii-a-first-install-6.jpg)
+
+![首次安装步骤截图](images/iii-a-first-install-7.jpg)
+
+> * 整个安装过程,一般的配置电脑安装所需的时间大约是 1 ~ 5 分钟。
+
+## 3.已有旧版本安装新版本
+
+![已有旧版本安装新版本步骤截图](images/iii-b-repeatedly-install-1.jpg)
+
+![已有旧版本安装新版本步骤截图](images/iii-b-repeatedly-install-2.jpg)
+
+> * 上图,显示我目前电脑中已经有一个 IntelliJ IDEA 版本,如果我勾选了标记 1,则表示安装之前会先卸载掉电脑上的旧版本。
+> * 上图标记 2,如果勾选了,则 IntelliJ IDEA 在卸载旧版本的时候直接删除掉你旧版本的个性化设置,这里不推荐勾选。
+> * 在小版本迭代中建议是卸载掉旧版本的,然后再进行新版本安装,因为小版本迭代一般都是 Bug 的修复,保留旧版本没有多大意义。
+> * 在大版本迭代中建议是保留旧版本,也就是不勾选上图标注 1,IntelliJ IDEA 是支持一台电脑装多个版本的。
+> * 接下来的步骤我们假设勾选了标注 1 再进行安装。
+
+![已有旧版本安装新版本步骤截图](images/iii-b-repeatedly-install-3.jpg)
+
+> * 上图,由于上一步勾选了卸载旧版本选项,所以出现了选择删除旧版本的配置选项。
+> * 第一个选项:删除旧版本的缓存和本地历史记录。
+> * 第二个选项:删除旧版本的个人个性化设置。
+> * 建议两个都不要勾选。
+> * 点击 uninstall,进入全自动的卸载过程,卸载完成接下来的步骤跟上文“首次安装”一致,这里不再进行说明。
+
+## 4.卸载
+
+> * 卸载过程在第 3 点已经有涉及到了,专门对 IntelliJ IDEA 进行卸载也是一样的流程。
+
+![卸载](images/iii-c-uninstall-1.jpg)
+
+![卸载](images/iii-c-uninstall-2.jpg)
+
+![卸载](images/iii-c-uninstall-3.jpg)
\ No newline at end of file