diff --git a/IntelliJ-IDEA-cache.md b/IntelliJ-IDEA-cache.md
index 4dcb4392..28e441db 100644
--- a/IntelliJ-IDEA-cache.md
+++ b/IntelliJ-IDEA-cache.md
@@ -4,9 +4,9 @@
在[《IntelliJ IDEA 界面介绍》](interface-introduce.md)章节里已经点到了 IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比,我也简单强调了 IntelliJ IDEA 索引的重要性。这里我们再对此进行详细说明索引、缓存对 IntelliJ IDEA 的重要性。
-通过《常见文件类型的图标介绍》章节,你已经认识到 IntelliJ IDEA 下各个文件类型的图标是什么样子的。其中有一个图标我是专门进行了讲解: `Java class located out of the source root`。我们也都知道该图标是表示 Java 类文件没有在 `Source root` 目录下的文件夹下会显示此图标,但是其实还有一种情况也是会显示此图标的。那就是:在 IntelliJ IDEA 创建索引过程中,所有的 Java类 都是这个图标,如果你项目大的话很容易观察到的,几个文件的小项目倒是不一定会看到。所以在 IntelliJ IDEA 创建索引过程即使你编辑了代码也是编译不了、运行不起来的,所以还是安安静静等 IntelliJ IDEA 创建索引完成。
+通过[《常见文件类型的图标介绍》](file-symbols-introduce.md)章节,你已经认识到 IntelliJ IDEA 下各个文件类型的图标是什么样子的。其中有一个图标我是专门进行了讲解: `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 缓存和索引出问题,这种情况还不少。遇到此类问题也不用过多担心,下面就来讲解如何解决。
+IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度,所以 IntelliJ IDEA 的索引的重要性我再唠叨一万遍都不为过。但是,IntelliJ IDEA 的索引和缓存并不是一直会良好地支持 IntelliJ IDEA 的,在某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如断电、蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,基本上百分八十的可能 IntelliJ IDEA 都会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。也有一些即使没有断电、蓝屏,也会有莫名其妙的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出问题,这种情况还不少。遇到此类问题也不用过多担心,下面就来讲解如何解决。
## 清除缓存和索引
@@ -17,7 +17,7 @@ IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快

> * 一般建议点击 `Invalidate and Restart`,这样会比较干净。
-> * 但是有一个需要提醒的是,如上图红圈标注的地方:清除索引和缓存会使得 IntelliJ IDEA 的 `Local History` 丢失,所以如果你项目没有加入到版本控制,而你又需要你项目文件的历史更改记录,那你最好备份下你的 `LocalHistory` 目录。目录地址在:`C:\Users\当前登录的系统用户名\.IntelliJIdea14\system\LocalHistory` 建议使用硬盘的全文搜索,这样效率更高。
+> * 但是有一个需要提醒的是,如上图红圈标注的地方:清除索引和缓存会使得 IntelliJ IDEA 的 `Local History` 丢失,所以如果你项目没有加入到版本控制,而你又需要你项目文件的历史更改记录,那你最好备份下你的 `LocalHistory` 目录。目录地址在:`C:\Users\当前登录的系统用户名\.IntelliJIdea14\system\LocalHistory`(Mac用户的目录默认地址在:`/Users/yangyun/Library/Caches/IntelliJIdea14/LocalHistory`) 建议使用硬盘的全文搜索,这样效率更高。
通过上面方式清除缓存、索引本质也就是去删除 C 盘下的 `system` 目录下的对应的文件而已,所以如果你不用上述方法也可以删除整个 `system`。当 IntelliJ IDEA 再次启动项目的时候会重新创建新的 `system` 目录以及对应项目缓存和索引。
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..23cb7903
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ {signature of Ty Coon}, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/README.md b/README.md
index 3d45cab6..e0a07bba 100644
--- a/README.md
+++ b/README.md
@@ -1,97 +1,106 @@
-# 重要说明,看三遍
+
+## 作者新方向,感谢支持
+
+- [开发全平台产品(文字版)](https://github.com/cdk8s/cdk8s-team-style/blob/master/full-stack/README.md)
+- [UPGPT - 简洁 AI 助手](https://upgpt.uptmr.com/)
## 介绍(Introduce)
-- 本套教程适用于:IntelliJ IDEA 14、15、2016 版本
+2021-07-24 更新:官方中文语言包正式推出!我个人不建议使用中文语言包,因为这对你查看官网帮助文档的时候会造成混乱。但是初学者确实使用中文语言包更容易上手,建议后期还原英文。
+- Gtihub Clone 比较慢的童鞋可以选择 Gitee 地址:`git clone --depth=1 https://gitee.com/cdk8s_org/IntelliJ-IDEA-Tutorial.git`
+- 本套教程适用于:
+ - [IntelliJ IDEA 14、15、2016、2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/idea/)
+ - [WebStorm 2016、2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/webstorm)
+ - [PhpStorm 2016、2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/phpstorm)
+ - [PyCharm 2016、2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/pycharm)
+ - [RubyMine 2016、2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/ruby)
+ - [Goland 2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/go)
+ - [CLion 2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/clion)
+ - [DataGrip 2016、2017、2018、2019、2020、2021、2022、2023 版本](https://www.jetbrains.com/datagrip)
+ - [Android Studio 任何版本](https://developer.android.com/studio/index.html?hl=zh-cn)
- 教程主要面向中文用户,如果你英文良好,建议直接阅读官网帮助文档
- 官网帮助中心:
-- 教程目前在不定时进行调整和补充,需要关注更新的请 `Watch`、`Star`、`Fork`。
-- 特别需要友情提醒的是:请 `Fork` 之后,在我的基础上按你自己喜欢的方式整理一套属于你自己的快捷键列表,并导出为 PDF,以备不时查阅,对于提升开发效率是很有帮助的!文章的图片建议在需要的时候可以 `右键 - 查看图像(在新标签页打开图片)` 进行原图查看。或者建议你放大页面缩放比例(快捷键 `Ctrl + 鼠标滚轮`),可以更加清楚地看清图片细节。
-- 同时邀请您一起参与完善该教程,帮助更多的人,欢迎反馈错误和意见!
-- 本系列文章唯一授权的商业网站是:[极客学院](http://www.jikexueyuan.com/),其他商业网站一律禁止转载。公益站点、个人博客、公众号等载体请在转载写明出处链接。
-- 如果你只是单纯要阅读的话,建议移步极客学院上观看,访问速度快很多:
- - 地址:
-- 如果你想参与完善该教程,请移步到 Github 上进行 Fork:
- - 地址:
-- 如果你需要一份电子版,请查看(制作电子版很费精力,不会常更新此文件):
- - 百度云:
- - Google Drive:[https://drive.google.com/file/d/0B5...UU/view?usp=sharing](https://drive.google.com/file/d/0B5gjjw8peC5Sa19vVEswbTRYYUU/view?usp=sharing "Google Drive")
-- 2016-10-25 更新,感谢 district10 童鞋做的一个在线阅读版本以及提供打包下载功能:
- - district10 主页:
- - 在线阅读:
- - 下载打包: (90.4 MB)
- - 提供的转换脚本: [把文件夹下的 Markdown 文件,转化成 GitHub 风格的 HTML。。](https://github.com/district10/md2html)
+- 特别需要友情提醒的是:
+ - 有的 Gif 动态图片操作过快,你需要暂停 Gif 图片进行观看的话,可以使用这个 Gif 图片查看工具:[7GIF(提取密码:0qo9)](https://pan.baidu.com/s/1mkrESsg)
+- **GitBook 在线阅读地址(强力推荐)**:
+- 很多不同地区用户反馈:图片看不到,这是无解的,因为被 github 部分资源链接是被强的,所以推荐使用 GitBook 阅读。
## 目录(Contents)
-- [1.IntelliJ IDEA 介绍(新用户必看)](introduce.md)
-- [2.本教程介绍(新用户必看)](about-this-tutorial.md)
-- [3.Windows 下安装](windows-install.md)
-- [4.Ubuntu 下安装](ubuntu-install.md)
-- [5.Mac 下安装](mac-install.md)
-- [6.安装总结(新用户必看)](install-summarize.md)
-- [7.首次运行(新用户必看)](first-run-wizard.md)
-- [8.安装目录讲解、IDE 设置云同步(新用户必看)](installation-directory-introduce.md)
-- [9.界面讲解(新用户必看)](interface-introduce.md)
-- [10.主题、字体、编辑区主题、文件编码修改、乱码问题(新用户必看)](theme-settings.md)
-- [11.各类文件类型图标讲解(新用户必看)](file-symbols-introduce.md)
-- [12.索引的讲解(新用户必看)](IntelliJ-IDEA-cache.md)
-- [13.编译方式讲解(新用户必看)](make-introduce.md)
-- [14.项目相关概念讲解(新用户必看)](project-composition-introduce.md)
-- [15.Hello World 的 Java 项目创建和项目配置文件讲解](project-settings.md)
-- [16.版本控制讲解](vcs-introduce.md)
-- [17.实时代码模板讲解](live-templates-introduce.md)
-- [18.文件代码模板讲解](file-templates-introduce.md)
-- [19.Emmet 讲解](emmet-introduce.md)
-- [20.Postfix Completion 讲解](postfix-completion-introduce.md)
-- [21.插件讲解](plugins-settings.md)
-- [22.Eclipse 的 Java Web 项目环境搭建](eclipse-java-web-project-introduce.md)
-- [23.Maven 项目介绍](maven-project-introduce.md)
-- [24.Maven 的单模块 / 多模块之 Spring MVC + Spring + Mybatis 项目讲解(重点)](maven-java-web-project-introduce.md)
-- [25.Maven 的单模块之 Spring MVC + Spring + Spring Data JPA 项目(基于 IntelliJ IDEA)](maven-java-web-project-introduce2.md)
-- [26.Debug 讲解](debug-introduce.md)
-- [27.重构讲解](refactor-introduce.md)
-- [28.数据库管理工具](database-introduce.md)
-- [29.IntelliJ IDEA 常用设置-1](settings-introduce-1.md)
-- [30.IntelliJ IDEA 常用设置-2](settings-introduce-2.md)
-- [31.IntelliJ IDEA 常用设置-3](settings-introduce-3.md)
-- [32.IntelliJ IDEA 常用设置-4](settings-introduce-4.md)
-- [33.IntelliJ IDEA 常用快捷键讲解(Win+Linux)(新用户必看)](keymap-introduce.md)
-- [34.IntelliJ IDEA 常用快捷键讲解(Mac)(新用户必看)](keymap-mac-introduce.md)
-- [35.从 Windows 过度到 Mac 必备快捷键对照表(新用户必看)](keymap-win-mac.md)
-- [36.IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用](jrebel-setup.md)
-- [37.IntelliJ IDEA 远程调试(Tomcat+Jetty)](remote-debugging.md)
-- [38.最特殊的快捷键 Alt + Enter 介绍(新用户必看)](hotkey-alt-enter-introduce.md)
-- [39.IntelliJ IDEA 插件开发视频教程](plugins-develop.md)
-- [40.本教程总结](this-tutorial-the-end.md)
-
+- **教程介绍(新用户必看)**
+ - [IntelliJ IDEA 介绍](introduce.md)
+ - [本教程介绍](about-this-tutorial.md)
+- **安装、基础环境介绍(新用户必看)**
+ - [Windows 下安装](windows-install.md)
+ - [Ubuntu 下安装](ubuntu-install.md)
+ - [Mac 下安装](mac-install.md)
+ - [安装环境总结](install-summarize.md)
+ - [首次运行向导](first-run-wizard.md)
+ - [安装后生成的目录说明、VM 设置](installation-directory-introduce.md)
+- **首次使用的基础设置介绍(新用户必看)**
+ - [UI 界面](interface-introduce.md)
+ - [UI 主题、字体、编辑区主题、文件编码修改、乱码问题](theme-settings.md)
+- **IntelliJ IDEA 特别地方(新用户必看)**
+ - [IntelliJ IDEA 搜索快的原因:索引](IntelliJ-IDEA-cache.md)
+ - [IntelliJ IDEA 下 Java 文件编译方式](make-introduce.md)
+ - [IntelliJ IDEA 下项目相关特有概念说明](project-composition-introduce.md)
+- **必备的快捷键(新用户必看)**
+ - [IntelliJ IDEA 常用快捷键讲解(Win + Linux)](keymap-introduce.md)
+ - [IntelliJ IDEA 常用快捷键讲解(Mac)](keymap-mac-introduce.md)
+ - [从 Windows 过度到 Mac 必备快捷键对照表](keymap-win-mac.md)
+ - [最特殊的快捷键 Alt + Enter 介绍](hotkey-alt-enter-introduce.md)
+- **提高编码效率功能介绍**
+ - [Maven 设置](maven-project-introduce.md)
+ - [IntelliJ IDEA 配合 Maven 的一些要点](maven-skill-introduce.md)
+ - [版本控制讲解(SVN + Git)](vcs-introduce.md)
+ - [实时代码模板](live-templates-introduce.md)
+ - [文件代码模板](file-templates-introduce.md)
+ - [前端代码模板:Emmet](emmet-introduce.md)
+ - [特殊代码模板:Postfix Completion](postfix-completion-introduce.md)
+ - [Debug 技巧](debug-introduce.md)
+ - [重构技巧](refactor-introduce.md)
+ - [数据库管理工具](database-introduce.md)
+ - [远程调试介绍(Tomcat + Jetty)](remote-debugging.md)
+- **高级设置介绍**
+ - [IntelliJ IDEA 推荐设置(新人重点)](settings-recommend-introduce.md)
+ - [IntelliJ IDEA 常用细节-1](settings-introduce-1.md)
+ - [IntelliJ IDEA 常用细节-2](settings-introduce-2.md)
+ - [IntelliJ IDEA 常用细节-3](settings-introduce-3.md)
+ - [IntelliJ IDEA 常用细节-4](settings-introduce-4.md)
+ - [Java 大型项目 VM 配置](vm-settings.md)
+- **插件推荐、插件开发**
+ - [插件相关功能设置、插件推荐](plugins-settings.md)
+ - [Java 热部署插件 JRebel 安装及使用](jrebel-setup.md)
+ - [插件开发视频教程](plugins-develop.md)
+- **其他(新用户必看)**
+ - [常见各类文件类型图标](file-symbols-introduce.md)
+ - [本教程总结](this-tutorial-the-end.md)
## 联系(Contact)
-- Email:`judas.n@qq.com`(常用) or `admin@youmeek.com`(备用)
-- Blog:
-- IntelliJ IDEA QQ 交流群:入群请看:
-- 欢迎捐赠 ^_^:
-
+- Email:`gitnavi@qq.com`
+- 微信:`upupmoment`
-## Gtihub 协同视频教程(Participate)
+## GitHub 协同视频教程(Participate)
-- 如果您不会使用 Git 或是 Github 也没关系,请认真学习下面视频教程:
-- Judas.n 录制
+- 如果您不会使用 Git 或是 GitHub 也没关系,请认真学习下面视频教程:
+- YouMeek 录制
- 视频格式:MP4
- 分辨率:1920 X 1080
- 片长:16 Min
- 文件大小:62 M
- 下载
- 百度云盘:
- - 360 网盘(2fb5):
-## Github 常用按钮说明
+## GitHub 常用按钮说明
-- Watch:关注该项目,作者有更新的时候,会在你的 Github 主页有通知消息。
+- Watch:关注该项目,作者有更新的时候,会在你的 GitHub 主页有通知消息。
- Star:收藏该项目,在你的头像上有一个 “Your stars” 链接,可以看到你的收藏列表,以方便下次进来。
-- Fork:复制一份项目到自己的 Github 空间上,你可以自己开发自己的这个地址项目,然后 Pull Request 给项目原主人。
+- Fork:复制一份项目到自己的 GitHub 空间上,你可以自己开发自己的这个地址项目,然后 Pull Request 给项目原主人。
+- 只 clone 最新的一个版本记录,历史旧数据不 clone 的两种方法(推荐这样做,因为图片很多,占了很大空间):
+ - 命令行方法:`git clone https://github.com/judasn/IntelliJ-IDEA-Tutorial.git --depth=1`
+
## 参与作者汇总(Author)
@@ -102,7 +111,7 @@
|作者(按参与时间排序)|地址|
|:---------|:---------|
-|Judas.n||
+|Meek||
|温泉||
|zhenhappy||
|two8g||
@@ -114,7 +123,8 @@
|district10||
|duanluan||
|binarywang||
+|chenhui7373||
+|wzxjohn||
+|Robot-L||
+|duanluan||
-## AD
-
-- [我个人开发的个性化定制网址导航:GitNavi.com](http://www.gitnavi.com)
diff --git a/SUMMARY.md b/SUMMARY.md
new file mode 100644
index 00000000..460ad6c6
--- /dev/null
+++ b/SUMMARY.md
@@ -0,0 +1,43 @@
+* [01. IntelliJ IDEA 介绍(新用户必看)](introduce.md)
+* [02. 教程介绍(新用户必看)](about-this-tutorial.md)
+* [03. 安装环境:Windows](windows-install.md)
+* [04. 安装环境:Ubuntu](ubuntu-install.md)
+* [05. 安装环境:Mac](mac-install.md)
+* [06. 安装环境总结(新用户必看)](install-summarize.md)
+* [07. 首次运行向导(新用户必看)](first-run-wizard.md)
+* [08. 安装后生成的目录说明、VM 设置(新用户必看)](installation-directory-introduce.md)
+* [09. UI 界面(新用户必看)](interface-introduce.md)
+* [10. UI 主题、字体、编辑区主题、文件编码修改、乱码问题(新用户必看)](theme-settings.md)
+* [11. 常见各类文件类型图标(新用户必看)](file-symbols-introduce.md)
+* [12. IntelliJ IDEA 搜索快的原因:索引(新用户必看)](IntelliJ-IDEA-cache.md)
+* [13. Java 文件编译方式(新用户必看)](make-introduce.md)
+* [14. 项目相关概念(新用户必看)](project-composition-introduce.md)
+* [15. Hello World 的 Java 项目创建和项目配置文件](project-settings.md)
+* [16. 版本控制讲解(SVN + Git)](vcs-introduce.md)
+* [17. 实时代码模板](live-templates-introduce.md)
+* [18. 文件代码模板](file-templates-introduce.md)
+* [19. 前端代码模板:Emmet](emmet-introduce.md)
+* [20. 特殊代码模板:Postfix Completion](postfix-completion-introduce.md)
+* [21. 插件相关功能](plugins-settings.md)
+* [22. Eclipse 的 Java Web 项目环境搭建](eclipse-java-web-project-introduce.md)
+* [23. Maven 结构项目搭建](maven-project-introduce.md)
+* [24. IntelliJ IDEA 配合 Maven 的一些要点](maven-skill-introduce.md)
+* [25. Maven 的单模块 / 多模块 Spring MVC + Spring + Mybatis 项目(新人重点)](maven-java-web-project-introduce.md)
+* [26. Maven 的单模块 Spring MVC + Spring + Spring Data JPA 项目](maven-java-web-project-introduce2.md)
+* [27. Maven 的单模块 Spring Boot 项目](https://github.com/judasn/SpringBoot-Simple-Demo-From-YouMeek)
+* [28. Debug 技巧](debug-introduce.md)
+* [29. 重构技巧](refactor-introduce.md)
+* [30. 数据库管理工具](database-introduce.md)
+* [31. IntelliJ IDEA 推荐设置(新人重点)](settings-recommend-introduce.md)
+* [32. IntelliJ IDEA 常用细节-1](settings-introduce-1.md)
+* [33. IntelliJ IDEA 常用细节-2](settings-introduce-2.md)
+* [34. IntelliJ IDEA 常用细节-3](settings-introduce-3.md)
+* [35. IntelliJ IDEA 常用细节-4](settings-introduce-4.md)
+* [36. IntelliJ IDEA 常用快捷键讲解(Win + Linux)(新用户必看)](keymap-introduce.md)
+* [37. IntelliJ IDEA 常用快捷键讲解(Mac)(新用户必看)](keymap-mac-introduce.md)
+* [38. 从 Windows 过度到 Mac 必备快捷键对照表(新用户必看)](keymap-win-mac.md)
+* [39. IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用](jrebel-setup.md)
+* [40. IntelliJ IDEA 远程调试(Tomcat+Jetty)](remote-debugging.md)
+* [41. 最特殊的快捷键 Alt + Enter 介绍(新用户必看)](hotkey-alt-enter-introduce.md)
+* [42. IntelliJ IDEA 插件开发视频教程](plugins-develop.md)
+* [43. 本教程总结](this-tutorial-the-end.md)
diff --git a/TOC.md b/TOC.md
index 9c39a427..27fcf061 100644
--- a/TOC.md
+++ b/TOC.md
@@ -1,40 +1,43 @@
-- [1.IntelliJ IDEA 介绍(新用户必看)](introduce.md)
-- [2.本教程介绍(新用户必看)](about-this-tutorial.md)
-- [3.Windows 下安装](windows-install.md)
-- [4.Ubuntu 下安装](ubuntu-install.md)
-- [5.Mac 下安装](mac-install.md)
-- [6.安装总结(新用户必看)](install-summarize.md)
-- [7.首次运行(新用户必看)](first-run-wizard.md)
-- [8.安装目录讲解、IDE 设置云同步(新用户必看)](installation-directory-introduce.md)
-- [9.界面讲解(新用户必看)](interface-introduce.md)
-- [10.主题、字体、编辑区主题、文件编码修改、乱码问题(新用户必看)](theme-settings.md)
-- [11.各类文件类型图标讲解(新用户必看)](file-symbols-introduce.md)
-- [12.索引的讲解(新用户必看)](IntelliJ-IDEA-cache.md)
-- [13.编译方式讲解(新用户必看)](make-introduce.md)
-- [14.项目相关概念讲解(新用户必看)](project-composition-introduce.md)
-- [15.Hello World 的 Java 项目创建和项目配置文件讲解](project-settings.md)
-- [16.版本控制讲解](vcs-introduce.md)
-- [17.实时代码模板讲解](live-templates-introduce.md)
-- [18.文件代码模板讲解](file-templates-introduce.md)
-- [19.Emmet 讲解](emmet-introduce.md)
-- [20.Postfix Completion 讲解](postfix-completion-introduce.md)
-- [21.插件讲解](plugins-settings.md)
-- [22.Eclipse 的 Java Web 项目环境搭建](eclipse-java-web-project-introduce.md)
-- [23.Maven 项目介绍](maven-project-introduce.md)
-- [24.Maven 的单模块 / 多模块之 Spring MVC + Spring + Mybatis 项目讲解(重点)](maven-java-web-project-introduce.md)
-- [25.Maven 的单模块之 Spring MVC + Spring + Spring Data JPA 项目(基于 IntelliJ IDEA)](maven-java-web-project-introduce2.md)
-- [26.Debug 讲解](debug-introduce.md)
-- [27.重构讲解](refactor-introduce.md)
-- [28.数据库管理工具](database-introduce.md)
-- [29.IntelliJ IDEA 常用设置-1](settings-introduce-1.md)
-- [30.IntelliJ IDEA 常用设置-2](settings-introduce-2.md)
-- [31.IntelliJ IDEA 常用设置-3](settings-introduce-3.md)
-- [32.IntelliJ IDEA 常用设置-4](settings-introduce-4.md)
-- [33.IntelliJ IDEA 常用快捷键讲解(Win+Linux)(新用户必看)](keymap-introduce.md)
-- [34.IntelliJ IDEA 常用快捷键讲解(Mac)(新用户必看)](keymap-mac-introduce.md)
-- [35.从 Windows 过度到 Mac 必备快捷键对照表(新用户必看)](keymap-win-mac.md)
-- [36.IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用](jrebel-setup.md)
-- [37.IntelliJ IDEA 远程调试(Tomcat+Jetty)](remote-debugging.md)
-- [38.最特殊的快捷键 Alt + Enter 介绍(新用户必看)](hotkey-alt-enter-introduce.md)
-- [39.IntelliJ IDEA 插件开发视频教程](plugins-develop.md)
-- [40.本教程总结](this-tutorial-the-end.md)
+- [01. IntelliJ IDEA 介绍(新用户必看)](introduce.md)
+- [02. 教程介绍(新用户必看)](about-this-tutorial.md)
+- [03. 安装环境:Windows](windows-install.md)
+- [04. 安装环境:Ubuntu](ubuntu-install.md)
+- [05. 安装环境:Mac](mac-install.md)
+- [06. 安装环境总结(新用户必看)](install-summarize.md)
+- [07. 首次运行向导(新用户必看)](first-run-wizard.md)
+- [08. 安装后生成的目录说明、VM 设置(新用户必看)](installation-directory-introduce.md)
+- [09. UI 界面(新用户必看)](interface-introduce.md)
+- [10. UI 主题、字体、编辑区主题、文件编码修改、乱码问题(新用户必看)](theme-settings.md)
+- [11. 常见各类文件类型图标(新用户必看)](file-symbols-introduce.md)
+- [12. IntelliJ IDEA 搜索快的原因:索引(新用户必看)](IntelliJ-IDEA-cache.md)
+- [13. Java 文件编译方式(新用户必看)](make-introduce.md)
+- [14. 项目相关概念(新用户必看)](project-composition-introduce.md)
+- [15. Hello World 的 Java 项目创建和项目配置文件](project-settings.md)
+- [16. 版本控制讲解(SVN + Git)](vcs-introduce.md)
+- [17. 实时代码模板](live-templates-introduce.md)
+- [18. 文件代码模板](file-templates-introduce.md)
+- [19. 前端代码模板:Emmet](emmet-introduce.md)
+- [20. 特殊代码模板:Postfix Completion](postfix-completion-introduce.md)
+- [21. 插件相关功能](plugins-settings.md)
+- [22. Eclipse 的 Java Web 项目环境搭建](eclipse-java-web-project-introduce.md)
+- [23. Maven 结构项目搭建](maven-project-introduce.md)
+- [24. IntelliJ IDEA 配合 Maven 的一些要点](maven-skill-introduce.md)
+- [25. Maven 的单模块 / 多模块 Spring MVC + Spring + Mybatis 项目(新人重点)](maven-java-web-project-introduce.md)
+- [26. Maven 的单模块 Spring MVC + Spring + Spring Data JPA 项目](maven-java-web-project-introduce2.md)
+- [27. Maven 的单模块 Spring Boot 项目](https://github.com/judasn/SpringBoot-Simple-Demo-From-YouMeek)
+- [28. Debug 技巧](debug-introduce.md)
+- [29. 重构技巧](refactor-introduce.md)
+- [30. 数据库管理工具](database-introduce.md)
+- [31. IntelliJ IDEA 推荐设置(新人重点)](settings-recommend-introduce.md)
+- [32. IntelliJ IDEA 常用细节-1](settings-introduce-1.md)
+- [33. IntelliJ IDEA 常用细节-2](settings-introduce-2.md)
+- [34. IntelliJ IDEA 常用细节-3](settings-introduce-3.md)
+- [35. IntelliJ IDEA 常用细节-4](settings-introduce-4.md)
+- [36. IntelliJ IDEA 常用快捷键讲解(Win + Linux)(新用户必看)](keymap-introduce.md)
+- [37. IntelliJ IDEA 常用快捷键讲解(Mac)(新用户必看)](keymap-mac-introduce.md)
+- [38. 从 Windows 过度到 Mac 必备快捷键对照表(新用户必看)](keymap-win-mac.md)
+- [39. IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用](jrebel-setup.md)
+- [40. IntelliJ IDEA 远程调试(Tomcat+Jetty)](remote-debugging.md)
+- [41. 最特殊的快捷键 Alt + Enter 介绍(新用户必看)](hotkey-alt-enter-introduce.md)
+- [42. IntelliJ IDEA 插件开发视频教程](plugins-develop.md)
+- [43. 本教程总结](this-tutorial-the-end.md)
diff --git a/database-introduce.md b/database-introduce.md
index 4cad0ff4..dbc9c6df 100644
--- a/database-introduce.md
+++ b/database-introduce.md
@@ -4,7 +4,7 @@

-> * 表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的 Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等等。
+> * 表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的 Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等等。
> * 如上图 Gif 所示,这是一个完成的配置 Database 过程,对于数据库需要的依赖包,IntelliJ IDEA 可以自动帮我们下载,所以我们只要配置对应的连接参数即可。
diff --git a/debug-introduce.md b/debug-introduce.md
index 8c8230f5..4ba9079d 100644
--- a/debug-introduce.md
+++ b/debug-introduce.md
@@ -8,19 +8,22 @@
## Debug 常用快捷键
-|快捷键|介绍|
-|:---------|:---------|
-|F7|在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中 `必备`|
-|F8|在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则不进入当前方法体内 `必备`|
-|F9|在 Debug 模式下,恢复程序运行,但是如果该断点下面代码还有断点则停在下一个断点上 `必备`|
-|Alt + F8|在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 `必备`|
-|Ctrl + F8|在 Debug 模式下,设置光标当前行为断点,如果当前已经是断点则去掉断点|
-|Shift + F7|在 Debug 模式下,智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法|
-|Shift + F8|在 Debug 模式下,跳出,表现出来的效果跟 `F9` 一样|
-|Ctrl + Shift + F8|在 Debug 模式下,指定断点进入条件|
-|Alt + Shift + F7|在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入|
-
-有时候我们可以这样粗鲁地认为 Debug 的使用就是等同于这几个快捷键的使用,所以上面的 `必备` 快捷键是我们必须牢记的,这些也是开发很常用的。
+
+|Win 快捷键|Mac 快捷键|介绍|
+|:---------|:---------|:---------|
+|F7|F7|进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中 `必备`|
+|F8|F8|进入下一步,如果当前行断点是一个方法,则不进入当前方法体内 `必备`|
+|F9|Command + Option + R|恢复程序运行,直至下个断点或程序运行结束 `必备`|
+|Alt + F8|Option + F8|选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 `必备`|
+|Ctrl + F8|Command + F8|设置光标当前行为断点,如果当前已经是断点则去掉断点|
+|Shift + F7|Shift + F7|智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法|
+|Shift + F8|Shift + F8|跳出,表现出来的效果跟 `F9` 一样|
+|Ctrl + Shift + F8|Command + Shift + F8|指定断点进入条件|
+|Alt + Shift + F7|Option + Shift + F7|进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入|
+|Alt + Shift + F8|Option + Shift + F8|返回上一步|
+|Drop Frame|Drop Frame|这个不是一个快捷键,而是一个 Debug 面板上的按钮。该按钮可以用来退回到当前停住的断点的上一层方法上,可以让过掉的断点重新来过|
+
+- 有时候我们可以这样粗鲁地认为 Debug 的使用就是等同于这几个快捷键的使用,所以上面的 `必备` 快捷键是我们必须牢记的,这些也是开发很常用的。
## Debug 特殊技能使用
@@ -44,6 +47,27 @@
> * 我们可以给断点设置进入的条件。如上图 Gif 所示,因为变量 temp3 不等于 200 所以该断点没有被进入直接跳过。
+
+
+> * 如上图,我们可以给断点设置更复杂的步入条件
+> * 红框中的 Pass count 表示跳过多少次后开始步入,比如 for 循环中,我们要查看一个变量循环 3 次后的结果就可以使用该方式。
+
+
+
+> * 如上图,对于某些不重要的断点,只要步入一次就够了,就可以勾选此选项,让它步入之后自动删除。
+
+
+
+> * 如上图,对于某些场景的断点,需要其他断点先触发之后再进行触发,可以选择此项。默认选择的是: None
+

> * 有时候当我们步入方法体之后,还想回退到方法体外。如 Gif 演示,断点进入 `addNum` 方法后,点击 `Drop Frame` 按钮之后,断点重新回到方法体之外。
+
+
+
+> * 上图 IntelliJ IDEA 版本:2017.1.3
+> * 如上图左侧红框内容,可以看到当前断点线程执行的堆栈情况,最上面的为当前断点位置,下面的是断点前面执行的方法,如果需要看断点前面走过的路,可以查看该区域。并且可以用图上箭头按钮进行限制显示框架类代码的执行过程,而不是包括依赖 jar 里面的执行过程。
+> * 如上图右侧红框内容,可以用来展示单点断点位置的内存情况,对于判断内存溢出相关问题很有帮助。
+
+
diff --git a/eclipse-java-web-project-introduce.md b/eclipse-java-web-project-introduce.md
index 648d453c..e4f7a676 100644
--- a/eclipse-java-web-project-introduce.md
+++ b/eclipse-java-web-project-introduce.md
@@ -4,7 +4,7 @@

-> * 如上图 Gif 演示,在 Eclipse 下,一般中小项目的项目结构基本都是这种模式的,所以我们这里也网络上一个开源项目 JspRun 进行讲解。
+> * 如上图 Gif 演示,在 Eclipse 下,一般中小项目的项目结构基本都是这种模式的,所以我们这里也通过网上一个开源项目 JspRun 进行讲解。
> * 下载地址:
## Eclipse 项目配置
@@ -18,7 +18,7 @@
> * 如上图标注 1 所示,IntelliJ IDEA 能自动识别到可编译的 `src` 类目录,所以这里文件夹是蓝色的。
> * 如上图标注 2 所示,Java Web 项目 `WebRoot` 是整个项目输出的根目录,所以这个区域也是非常重要的,只是无需配置。
-> * 如上图标注 3 所示,`WEB-INF` 下的一些配置文件,以及两个目录 `classes` 和 `lib` 都是至关重要的,其中 `classes` 是红色目录,也就是被排除的,因为编译的文件对开发来讲是没有多大意义的,所以进行了排除。但是这并不会影响容器去使用它。
+> * 如上图标注 3 所示,`WEB-INF` 下的一些配置文件,以及两个目录 `classes` 和 `lib` 都是至关重要的,其中 `classes` 是红色目录,也就是被排除的,因为编译产生的文件对开发来讲是没有多大意义的,所以进行了排除,但是这并不会影响容器去使用它。

@@ -26,16 +26,16 @@

-> * 如上图红圈所示,我们可以根据对项目的任意目录进行这五种目录类型标注,这个知识点非常非常重要,必须会。
->> * `Sources` 一般用于标注类似 `src` 这种可编译目录。有时候我们不单单项目的 `src` 目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目录进行此标注。只有 `Sources` 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。
+> * 如上图红圈所示,我们可以根据实际情况,对项目的任意目录进行这五种目录类型的标注,选中要标注的目录然后点击想要标注的类型按钮即可,这个知识点非常非常重要,必须会。
+>> * `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 所示,如果要去掉目录的标记含义,可以点击打叉按钮进行删除。
+> * 如上图箭头所示,被标注的目录会在右侧有一个总的概括。值得一提的是 `classes` 虽然是 `Excluded` 目录,但是由于它的特殊性且不可编辑,所以不显示在这里。
+> * 如上图标注 1 所示,如果要去掉目录的标注含义,可以点击打叉按钮进行删除。

@@ -48,17 +48,17 @@
>
>> * 加号,表示可以引入新依赖包。
>> * 减号,表示可以去除对应的依赖包。
->> * 向上箭头,表示依赖包可以向上移动位置。依赖包越上面的表示在项目加载的时候越是优先,所以对于同一个依赖包,不同版本,依赖顺序不同,结果可能也是很有会不同的。
+>> * 向上箭头,表示依赖包可以向上移动位置。依赖包越上面的表示在项目加载的时候越是优先,所以对于同一个依赖包,不同版本,依赖顺序不同,结果也可能会是大不相同的。
>> * 向下箭头,表示依赖包可以向下移动位置,原因同上。
>> * 笔,表示可以编辑依赖包的名称和路径。

-> * 如上图所示,引入依赖包支持 `jar` 包和目录。以及已经导入项目的 `Libraries` 中的依赖包。多 Module 的项目还可以依赖其他 Module。
+> * 如上图所示,引入依赖包支持 `jar` 包和目录,以及已经导入项目的 `Libraries` 中的依赖包。多 Module 的项目还可以依赖其他 Module。

-> * 由于我们刚刚去掉了红圈中的所有依赖包,所以我们现在还需要导入依赖包。到导入之前我们先把项目的 `lib` 作为一个总的依赖包进行放置到项目 `Libraries` 中。如上图 Gif 演示,就是把 `lib` 目录转换成一个依赖包。这样的好处是,当我们项目有新添加依赖包,我们只要放置在 `lib` 目录下即可自动被项目引入,原因就是因为我们这里引的是目录,而不是一个一个依赖包。
+> * 由于我们刚刚去掉了红圈中的所有依赖包,所以我们现在还需要导入依赖包。在导入之前我们先把项目的 `lib` 作为一个总的依赖包放置到项目 `Libraries` 中。如上图 Gif 演示,就是把 `lib` 目录转换成一个依赖包。这样的好处是,当我们项目需要添加新依赖包时,我们只要放置在 `lib` 目录下即可自动被项目引入,原因就是我们这里引的是目录,而不是一个一个依赖包。

@@ -67,7 +67,7 @@

> * 对于传统的 Java Web 项目,我们一般还需要指定配置 web.xml 位置。如上图 Gif 演示,这个一般在 `Facts` 中进行配置。`Facts` 可以理解为用于配置项目的框架区,在这里管理项目使用的框架配置文件。这个是 IntelliJ IDEA 特有的一个配置点。
-> * 除了 web.xml 一般我们要配置外,其他一些框架,即使我们不在这里配置也是不会影响项目的运行的,但是是有缺点的。比如我们项目中一般都是有 Spring 框架的,而 Spring 是有很多配置文件的,如果我们在这里进行了配置,那你会发现 IntelliJ IDEA 编辑区底部会多出现几个跟 Spring 项目的设置区,原因就是你告诉了 IntelliJ IDEA,你的项目使用了 Spring 框架,那 IntelliJ IDEA 就会出现其对应的配置功能给你。Hibernate 等其他框架道理一样。
+> * 除了 web.xml 一般我们要配置外,其他一些框架,即使我们不在这里配置也是不会影响项目的运行的,但是是有缺点的,比如我们项目中一般都是有 Spring 框架的,而 Spring 是有很多配置文件的,如果我们在这里进行了配置,那你会发现 IntelliJ IDEA 编辑区底部会多出现几个 Spring 项目的设置区,原因就是你告诉了 IntelliJ IDEA,你的项目使用了 Spring 框架,那 IntelliJ IDEA 就会出现其对应的配置功能给你。Hibernate 等其他框架道理一样。

@@ -90,7 +90,7 @@
> * 如上图标注 2 所示,我们可以指定给运行的容器设置 VM 参数。
> * 如上图标注 3 所示,这分别是在两种命令下的触发的事件。这个是 IntelliJ IDEA 特有的,也是重点。
>
->> * `On Update action` 当我们按 `Ctrl + F10` 进行容器更新的时候,可以根据我们配置的这个事件内容进行容器更新。其中我选择的 `Update classes and resources` 事件是最常用的,表示我们在按 `Ctrl + F10` 进行容器更新的时候,我们触发更新编译的类和资源文件到容器中。在 Debug 模式下,这个也就是所谓的 `HotSwap`。这是这种热部署没有 JRebel 插件那样好用。
+>> * `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 之后自动出现的。
diff --git a/first-run-wizard.md b/first-run-wizard.md
index 91c03e98..7e71e881 100644
--- a/first-run-wizard.md
+++ b/first-run-wizard.md
@@ -13,7 +13,7 @@

-> * 上图默认选择中的是 `Buy IntelliJ IDEA`,验证 IntelliJ IDEA 的许可有如图三种方式,我们这里使用的是 30 天试用版本进行演示,顾单击 `Evaluate for free for 30 days` 进行下一步。
+> * 上图默认选择中的是 `Buy IntelliJ IDEA`,验证 IntelliJ IDEA 的许可有如图三种方式,我们这里使用的是 30 天试用版本进行演示,故单击 `Evaluate for free for 30 days` 进行下一步。

@@ -33,5 +33,5 @@

-> * 选择好自己所需的扩展功能后,按 `Start using IntelliJ IDEA` 显示上图启动界面,金黄色进度条走完之后,欢迎真正进入 IntelliJ IDEA 的编码世界!
+> * 选择好自己所需的扩展功能后,按 `Start using IntelliJ IDEA` 显示上图启动界面,金黄色进度条走完之后,欢迎进入 IntelliJ IDEA 编码世界!
diff --git a/images/clone-depth-1.jpg b/images/clone-depth-1.jpg
new file mode 100644
index 00000000..13b5bf35
Binary files /dev/null and b/images/clone-depth-1.jpg differ
diff --git a/images/viii-b-mac-vm-settings-1.jpg b/images/viii-b-mac-vm-settings-1.jpg
deleted file mode 100644
index b3f8b2c4..00000000
Binary files a/images/viii-b-mac-vm-settings-1.jpg and /dev/null differ
diff --git a/images/xvi-g-git-problem-1.jpg b/images/xvi-g-git-problem-1.jpg
new file mode 100644
index 00000000..d450717b
Binary files /dev/null and b/images/xvi-g-git-problem-1.jpg differ
diff --git a/images/xvi-h-git-flow-feature-1.png b/images/xvi-h-git-flow-feature-1.png
new file mode 100644
index 00000000..a3716324
Binary files /dev/null and b/images/xvi-h-git-flow-feature-1.png differ
diff --git a/images/xxii-f-maven-skill-introduce.jpg b/images/xxii-f-maven-skill-introduce.jpg
new file mode 100644
index 00000000..7d06f15e
Binary files /dev/null and b/images/xxii-f-maven-skill-introduce.jpg differ
diff --git a/images/xxiii-c-debug-use-1.jpg b/images/xxiii-c-debug-use-1.jpg
new file mode 100644
index 00000000..ff6372a4
Binary files /dev/null and b/images/xxiii-c-debug-use-1.jpg differ
diff --git a/images/xxiii-c-debug-use-2.jpg b/images/xxiii-c-debug-use-2.jpg
new file mode 100644
index 00000000..0a096152
Binary files /dev/null and b/images/xxiii-c-debug-use-2.jpg differ
diff --git a/images/xxiii-c-debug-use-3.jpg b/images/xxiii-c-debug-use-3.jpg
new file mode 100644
index 00000000..0ea2f5b3
Binary files /dev/null and b/images/xxiii-c-debug-use-3.jpg differ
diff --git a/images/xxiii-c-debug-use-4.jpg b/images/xxiii-c-debug-use-4.jpg
new file mode 100644
index 00000000..336f2690
Binary files /dev/null and b/images/xxiii-c-debug-use-4.jpg differ
diff --git a/images/xxvi-a-settings-introduce-42.jpg b/images/xxvi-a-settings-introduce-42.jpg
new file mode 100644
index 00000000..d81d0321
Binary files /dev/null and b/images/xxvi-a-settings-introduce-42.jpg differ
diff --git a/images/xxvi-a-settings-introduce-43.jpg b/images/xxvi-a-settings-introduce-43.jpg
new file mode 100644
index 00000000..f85e5a95
Binary files /dev/null and b/images/xxvi-a-settings-introduce-43.jpg differ
diff --git a/images/xxvi-a-settings-introduce-44.gif b/images/xxvi-a-settings-introduce-44.gif
new file mode 100644
index 00000000..fcf8306b
Binary files /dev/null and b/images/xxvi-a-settings-introduce-44.gif differ
diff --git a/images/xxvi-a-settings-introduce-45.jpg b/images/xxvi-a-settings-introduce-45.jpg
new file mode 100644
index 00000000..044a1f64
Binary files /dev/null and b/images/xxvi-a-settings-introduce-45.jpg differ
diff --git a/images/xxvi-a-settings-introduce-46.jpg b/images/xxvi-a-settings-introduce-46.jpg
new file mode 100644
index 00000000..b715c501
Binary files /dev/null and b/images/xxvi-a-settings-introduce-46.jpg differ
diff --git a/images/xxvi-a-settings-introduce-47.png b/images/xxvi-a-settings-introduce-47.png
new file mode 100644
index 00000000..0129efed
Binary files /dev/null and b/images/xxvi-a-settings-introduce-47.png differ
diff --git a/images/xxvi-a-settings-introduce-48.png b/images/xxvi-a-settings-introduce-48.png
new file mode 100644
index 00000000..7fb9c255
Binary files /dev/null and b/images/xxvi-a-settings-introduce-48.png differ
diff --git a/images/xxvi-a-settings-introduce-49.png b/images/xxvi-a-settings-introduce-49.png
new file mode 100644
index 00000000..b1d18e90
Binary files /dev/null and b/images/xxvi-a-settings-introduce-49.png differ
diff --git a/images/xxvi-a-settings-introduce-50.png b/images/xxvi-a-settings-introduce-50.png
new file mode 100644
index 00000000..1695787f
Binary files /dev/null and b/images/xxvi-a-settings-introduce-50.png differ
diff --git a/images/xxvi-a-settings-introduce-51.png b/images/xxvi-a-settings-introduce-51.png
new file mode 100644
index 00000000..2acc566e
Binary files /dev/null and b/images/xxvi-a-settings-introduce-51.png differ
diff --git a/images/xxviii-jrebel-setup-16.jpg b/images/xxviii-jrebel-setup-16.jpg
new file mode 100644
index 00000000..da269e36
Binary files /dev/null and b/images/xxviii-jrebel-setup-16.jpg differ
diff --git a/images/xxviii-jrebel-setup-17.jpg b/images/xxviii-jrebel-setup-17.jpg
new file mode 100644
index 00000000..3267ae59
Binary files /dev/null and b/images/xxviii-jrebel-setup-17.jpg differ
diff --git a/images/xxviii-jrebel-setup-18.jpg b/images/xxviii-jrebel-setup-18.jpg
new file mode 100644
index 00000000..01f7069e
Binary files /dev/null and b/images/xxviii-jrebel-setup-18.jpg differ
diff --git a/install-summarize.md b/install-summarize.md
index 9e68d889..d040979f 100644
--- a/install-summarize.md
+++ b/install-summarize.md
@@ -6,7 +6,7 @@
我们现在来假设一种国内常见的开发环境:
->有一个在开发的 Java Web 项目,它使用的框架为主流的:Struts + Spring + Hibernate,使用这三个框架的过程中,我们要引入大量的框架 jar 包,在我们的 Web 容器启动时,这些框架架包就要占用大量的内存,而且 IntelliJ IDEA 本身功能繁多,占用的内存也不算低,再加上我们这里还没计算计算机上的其他软件应用。所以基本上 2G 内存的计算机只适合写小程序、小项目或是开发静态页面。
+>有一个在开发的 Java Web 项目,它使用的框架为主流的:Struts + Spring + Hibernate,使用这三个框架的过程中,我们要引入大量的框架 jar 包,在我们的 Web 容器启动时,这些框架jar包就要占用大量的内存,而且 IntelliJ IDEA 本身功能繁多,占用的内存也不算低,再加上我们这里还没计算计算机上的其他软件应用。所以基本上 2G 内存的计算机只适合写小程序、小项目或是开发静态页面。
我个人建议,如果你是开发 Java Web 项目最好的方案是 8G 内存或是以上,硬盘能再用上固态是最好的,因为 IntelliJ IDEA 有大量的缓存、索引文件,把 IntelliJ IDEA 的缓存、索引文件放在固态上,IntelliJ IDEA 流畅度也会加快很多。
diff --git a/installation-directory-introduce.md b/installation-directory-introduce.md
index b85b3e04..4e272418 100644
--- a/installation-directory-introduce.md
+++ b/installation-directory-introduce.md
@@ -11,12 +11,15 @@
> * `idea64.exe.vmoptions` 文件是 IntelliJ IDEA 64 位的可执行文件的 VM 配置文件,具体配置修改会下面进行专门讲解。
> * `idea.properties` 文件是 IntelliJ IDEA 的一些属性配置文件,具体配置修改会下面进行专门讲解。
+- **强烈推荐不要直接修改安装目录下的这几个配置文件,因为 IDEA 升级/重装可能会导致修改完全失效!**
+- **强烈推荐使用 IDEA 自带菜单中的 `Help -> Edit Custom VM Options` 和 `Help -> Edit Custom Properties` 来进行参数个性化配置!**
+
## 设置目录介绍

> * 不管你使用的是哪个操作系统,IntelliJ IDEA 的设置目录命名是统一的、有规律:.IntelliJIdea14。其中 14 表示大版本号,如果你电脑上还同时装有 13 的版本,那则还应该会有一个:`.IntelliJIdea13` 的设置目录,其他版本道理一样。
-> * 在三大主流的操作系统上,你只要对整个硬盘进行搜索:`.IntelliJIdea14`,即可找到,无需可以去记忆到底生成在哪个目录下。
+> * 在三大主流的操作系统上该文件夹都在当前用户的 Home 目录,Windows 上即 `%userprofile%`,Linux 和 Mac 上即 `~`
> * 对于这个设置目录有一个特性,就是你删除掉整个目录之后,重新启动 IntelliJ IDEA 会再自动帮你再生成一个全新的默认配置,所以很多时候如果你把 IntelliJ IDEA 配置改坏了,没关系,删掉该目录,一切都会还原到默认,我是很建议新人可以多自己摸索 IntelliJ IDEA 的配置,多几次还原,有助于加深对 IntelliJ IDEA 的了解。
> * `config` 目录是 IntelliJ IDEA 个性化化配置目录,或者说是整个 IDE 设置目录。也是我个人认为最重要的目录,没有之一,如果你还记得安装篇的介绍的时候,安装新版本的 IntelliJ IDEA 会自动扫描硬盘上的旧配置目录,指的就是该目录。这个目录主要记录了:IDE 主要配置功能、自定义的代码模板、自定义的文件模板、自定义的快捷键、Project 的 tasks 记录等等个性化的设置。
> * `system` 目录是 IntelliJ IDEA 系统文件目录,是 IntelliJ IDEA 与开发项目一个桥梁目录,里面主要有:缓存、索引、容器文件输出等等,虽然不是最重要目录,但是也是最不可或缺目录之一。
@@ -26,16 +29,19 @@

> * 上图是 64 位可执行文件的 JVM 配置文件内容,如果你是 32 位的系统你应该修改的是 `idea.exe.vmoptions` 文件里面的内容,但是由于 32 位系统内存一般都是 2G 左右的,所以也没有多大空间可以调整,所以一般无需调整的。
-> * 修改的原则主要是根据自己机器的内存情况来判断的,我个人是建议 8G 以下的机子或是静态页面开发者都是无需修改的。如果你是开发大型项目、Java 项目或是 Android 项目,并且内存大于 8G,建议进行修改,常修改的就是下面 4 个参数,我这里主要以我的机子会例进行建议,每个人机子情况不一,这里也只是做一个引子,最好的调整方式是你可以根据 jconsole 这类工具进行观察后个性化调整。
->
+> * 修改的原则主要是根据自己机器的内存情况来判断的,我个人是建议 8G 以下的机子或是静态页面开发者都是无需修改的。如果你是开发大型项目、Java 项目或是 Android 项目,并且内存大于 8G,建议进行修改,常修改的就是下面 4 个参数,我这里主要以我的机子为例进行建议,每个人机子情况不一,这里也只是做一个引子,最好的调整方式是你可以根据 jconsole 这类工具进行观察后个性化调整。
+> * **强烈推荐**使用 IDEA 自带菜单中的 `Help -> Edit Custom VM Options` 来进行个性化配置,而不是直接修改安装目录中的该文件!
+>
>> * `-Xms128m`,16 G 内存的机器可尝试设置为 `-Xms512m`
>> * `-Xmx750m`,16 G 内存的机器可尝试设置为 `-Xmx1500m`
->> * `-XX:MaxPermSize=350m`,16G 内存的机器可尝试设置为 `-XX:MaxPermSize=500m`
+>> * `-XX:MaxPermSize=350m`,16G 内存的机器可尝试设置为 `-XX:MaxPermSize=500m`(P.S:2017 后的版本该参数被剔除)
>> * `-XX:ReservedCodeCacheSize=225m`,16G 内存的机器可尝试设置为 `-XX:ReservedCodeCacheSize=500m`

-> * 上图是 IntelliJ IDEA 一些属性配置,没有 32 位和 64 位之分,修改原则主要根据个人对 IntelliJ IDEA 的个性化配置情况来分析。常修改的就是下面 4 个参数:
+> * 上图是 IntelliJ IDEA 一些属性配置,没有 32 位和 64 位之分,修改原则主要根据个人对 IntelliJ IDEA 的个性化配置情况来分析。
+> * **强烈推荐**在阅读了安装目录中的带注释的配置文件后,使用 IDEA 自带菜单中的 `Help -> Edit Custom Properties` 来进行个性化配置!
+> * 常修改的就是下面 4 个参数:
>
>> * `idea.config.path=${user.home}/.IntelliJIdea/config`,该属性主要用于指向 IntelliJ IDEA 的个性化配置目录,默认是被注释,打开注释之后才算启用该属性,这里需要特别注意的是斜杠方向,这里用的是正斜杠。
>> * `idea.system.path=${user.home}/.IntelliJIdea/system`,该属性主要用于指向 IntelliJ IDEA 的系统文件目录,默认是被注释,打开注释之后才算启用该属性,这里需要特别注意的是斜杠方向,这里用的是正斜杠。如果你的项目很多,则该目录会很大,如果你的 C 盘空间不够的时候,还是建议把该目录转移到其他盘符下。
@@ -47,7 +53,8 @@

> * 上图是我的个性化配置目录,我是存放在 F 盘,同时该目录也是在 360 同步盘中。这样做主要是为了让我的多台设置可以同时使用一个个性化配置,保证个人开发习惯,额外作用就是在服务器上一个备份作用。
-> * 设置方式很简单,修改 `idea.properties` 属性文件中的 `idea.config.path` 值,我的机器为:`idea.config.path=F:/360SycDir/idea_config/config`
+> * 设置方式很简单,修改 `idea.properties` 属性文件中的 `idea.config.path` 值,我的机器为:`idea.config.path=F:/360SycDir/idea_config/config`.
+> * 如需要继续使用现存的配置,需将原个性化配置目录(config目录),复制到修改后自定义的配置目录中。
# Mac 的配置文件保存路径
@@ -62,4 +69,26 @@
# Mac 下修改 VM 参数
-
+## 方法一(官方推荐)
+
+大部分情况下,修改 VM 参数可以使用 IDEA 自带的选项:
+`Help -> Edit Custom VM Options`
+这个选项会自动帮你在正确的位置用正确的名字新建一个 VM 参数配置文件,并在当前 IDEA 窗口自动打开。我们只需要按需编辑,保存后重启即可。
+建议在编辑的时候查看一下文件的原始路径,以备改错参数导致无法启动时恢复使用。
+这种方法修改不会由于升级 IDEA 导致修改被还原。
+
+## 方法二
+
+手动修改个人配置下的 `idea.vmoptions` 文件,完整的路径为:
+`/Users/你的用户名/Library/Preferences/IntelliJIdeaXXXXXX/idea.vmoptions`
+或者可以简写为:
+`~/Library/Preferences/IntelliJIdeaXXXXXX/idea.vmoptions`
+如果该文件不存在,按照名称新建一个即可。
+推荐直接使用命令行进行编辑。
+Finder 中进入该文件夹的方法是:
+- 打开 Finder
+- 按快捷键 Command + Shift + G
+- 在弹出窗口中输入 `~/Library/Preferences/`
+- 找到对应版本的 `IntelliJIdea` 文件夹
+- 新建或修改 `idea.vmoptions` 文件
+
diff --git a/introduce.md b/introduce.md
index 76c93c71..dfe8e1b5 100644
--- a/introduce.md
+++ b/introduce.md
@@ -10,7 +10,7 @@
> * [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
+> * [DataGrip](http://www.jetbrains.com/dbe/ "DataGrip 主要用于开发 SQL") 主要用于开发 SQL
> * [Android Studio](http://developer.android.com/tools/studio/ "Android Studio 主要用于开发 Android") 主要用于开发 Android(Google 基于 IntelliJ IDEA 社区版进行迭代所以也姑且算上)
## IntelliJ IDEA 介绍
@@ -25,7 +25,7 @@ IntelliJ IDEA 在 2015 年 06 月官网主页是这样介绍自己的:
IntelliJ IDEA 对自己的定义是很清晰的,对于新人来讲可能还不太理解,可能还会有误会,认为它博而不精,但是对于老用户来讲应该是非常认可上面这句话的。通过下面功能表格,新人对于 IntelliJ IDEA 所具备的功能会有一个新的认识。
-如果用一句话来形容 IntelliJ IDEA,我会说:**IntelliJ IDEA 是目前所有 IDE 中最具备沉浸式的 IDE,没有之一**。
+如果用一句话来形容 IntelliJ IDEA,我会说:**IntelliJ IDEA 是目前所有 IDE 中最具备沉浸式的 JVM IDE,没有之一**。
## IntelliJ IDEA 主要功能介绍
@@ -57,12 +57,22 @@ IntelliJ IDEA 对自己的定义是很清晰的,对于新人来讲可能还不
上面特性只是 IntelliJ IDEA 的冰山一角,而且这个还不是 IntelliJ IDEA 最重要的地方,IntelliJ IDEA 最重要的特性就是人性化、智能,后面学习你会慢慢接触到。
-## 更多官网信息
+## 更多官方学习信息
> * IntelliJ IDEA 主要特性介绍 1:
> * IntelliJ IDEA 主要特性介绍 2:
-> * 官网博客:
-> * 官网 wiki:
-> * 官网社区:
-> * 官网快速入门:
-> * 官网在线帮助文档:
+> * 官方快速入门:
+> * 官方在线帮助文档:
+> * 官方 wiki:
+
+## 更多官方资讯跟踪途径
+
+> * 官方博客:
+> * IntelliJ IDEA 官方 community:
+> * IntelliJ IDEA 官方 issue:
+> * YouTube:
+> * Twitter:
+> * Facebook:
+> * JetBrains 新浪微博:
+> * JetBrains Google+:
+> * IntelliJ IDEA Google+:
diff --git a/jrebel-setup.md b/jrebel-setup.md
index d7aa7039..f25110ef 100644
--- a/jrebel-setup.md
+++ b/jrebel-setup.md
@@ -75,7 +75,7 @@ Mac OS 用这个:
![enter description here][12]
-安装好后在设置里面会多出一项JRebel的配置
+安装好后在设置里面会多出一项 JRebel 的配置
查看一下插件是否有效
@@ -87,6 +87,8 @@ Mac OS 用这个:
![enter description here][14]
+#### 自定义容器启动
+
配置 Tomcat 的方法和直接上面说的直接调用配置方法一样, 同样需要注意的是 `On 'Update' action` 和 `On frame deactivation` 这两项目一定要选择 `Update classes and resources`, 唯一不同的是 VM options 这项不需要填, 放空就好
接下来直接启动项目, 一般选择后面那个 Debug 按钮
@@ -94,6 +96,20 @@ Mac OS 用这个:
看到 Log 有 JRebel 输出的版本信息, 没有报错就是表示成功执行了, 随便改一个类试试吧
+#### Maven 或 Gradle 启动
+
+打开 JRebel Panel 窗口,然后勾选项目或模块即可,这时插件会在 src/main/resources 目录下生成 rebel.xml 文件,这里面指定了插件检测热部署文件夹的路径
+
+![enter description here][16]
+
+![enter description here][17]
+
+然后在 Maven projects 或 Gradle projects 窗口,右键 Task 使用 JRebel 启动
+
+![enter description here][18]
+
+启动之后更新资源重新编译(Ctrl + Shift + F9)即可
+
JRebel 官网有免费激活服务,到官网注册领取,请支持正版:
- 官网注册,注册完就会显示一串密钥了:
@@ -113,3 +129,6 @@ JRebel 官网有免费激活服务,到官网注册领取,请支持正版:
[13]: ./images/xxviii-jrebel-setup-15.jpg "xxviii-jrebel-setup-15.jpg"
[14]: ./images/xxviii-jrebel-setup-13.jpg "xxviii-jrebel-setup-13.jpg"
[15]: ./images/xxviii-jrebel-setup-14.jpg "xxviii-jrebel-setup-14.jpg"
+ [16]: ./images/xxviii-jrebel-setup-16.jpg "xxviii-jrebel-setup-16.jpg"
+ [17]: ./images/xxviii-jrebel-setup-17.jpg "xxviii-jrebel-setup-17.jpg"
+ [18]: ./images/xxviii-jrebel-setup-18.jpg "xxviii-jrebel-setup-18.jpg"
diff --git a/keymap-introduce.md b/keymap-introduce.md
index ac181d65..b9b33f60 100644
--- a/keymap-introduce.md
+++ b/keymap-introduce.md
@@ -36,196 +36,201 @@ IntelliJ IDEA 的便捷操作性,快捷键的功劳占了一大半,对于各
|快捷键|介绍|
|:---------|:---------|
-|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 + End|跳到文件尾|
-|Ctrl + Home|跳到文件头|
-|Ctrl + Space|基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 `Ctrl + 逗号` `(必备)` |
-|Ctrl + Delete|删除光标后面的单词或是中文句 `(必备)` |
-|Ctrl + BackSpace|删除光标前面的单词或是中文句 `(必备)` |
-|Ctrl + 1,2,3...9|定位到对应数值的书签位置 `(必备)` |
-|Ctrl + 左键单击|在打开的文件标题上,弹出该文件路径 `(必备)` |
-|Ctrl + 光标定位|按 Ctrl 不要松开,会显示光标所在的类信息摘要|
-|Ctrl + 左方向键|光标跳转到当前单词 / 中文句的左侧开头位置 `(必备)` |
-|Ctrl + 右方向键|光标跳转到当前单词 / 中文句的右侧开头位置 `(必备)` |
-|Ctrl + 前方向键|等效于鼠标滚轮向前效果 `(必备)` |
-|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 + 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 + 左方向键|切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换 `(必备)` |
-|Alt + 右方向键|按切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换 `(必备)` |
-|Alt + 前方向键|当前光标跳转到当前文件的前一个方法名位置 `(必备)` |
-|Alt + 后方向键|当前光标跳转到当前文件的后一个方法名位置 `(必备)` |
-|Alt + 1,2,3...9|显示对应数值的选项卡,其中 1 是 Project 用得最多 `(必备)` |
+|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 + 左方向键|切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换 `(必备)` |
+|Alt + 右方向键|按切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换 `(必备)` |
+|Alt + 前方向键|当前光标跳转到当前文件的前一个方法名位置 `(必备)` |
+|Alt + 后方向键|当前光标跳转到当前文件的后一个方法名位置 `(必备)` |
+|Alt + 1,2,3...9|显示对应数值的选项卡,其中 1 是 Project 用得最多 `(必备)` |
## Shift
|快捷键|介绍|
|:---------|:---------|
-|Shift + F1|如果有外部文档可以连接外部文档|
-|Shift + F2|跳转到上一个高亮错误 或 警告位置|
-|Shift + F3|在查找模式下,查找匹配上一个|
-|Shift + F4|对当前打开的文件,使用新Windows窗口打开,旧窗口保留|
-|Shift + F6|对文件 / 文件夹 重命名|
-|Shift + F7|在 Debug 模式下,智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法|
-|Shift + F8|在 Debug 模式下,跳出,表现出来的效果跟 `F9` 一样|
-|Shift + F9|等效于点击工具栏的 `Debug` 按钮|
-|Shift + F10|等效于点击工具栏的 `Run` 按钮|
-|Shift + F11|弹出书签显示层 `(必备)` |
-|Shift + Tab|取消缩进 `(必备)` |
-|Shift + ESC|隐藏当前 或 最后一个激活的工具窗口|
-|Shift + End|选中光标到当前行尾位置|
-|Shift + Home|选中光标到当前行头位置|
-|Shift + Enter|开始新一行。光标所在行下空出一行,光标定位到新行位置 `(必备)` |
-|Shift + 左键单击|在打开的文件名上按此快捷键,可以关闭当前打开文件 `(必备)` |
-|Shift + 滚轮前后滚动|当前文件的横向滚动轴滚动 `(必备)` |
+|Shift + F1|如果有外部文档可以连接外部文档|
+|Shift + F2|跳转到上一个高亮错误 或 警告位置|
+|Shift + F3|在查找模式下,查找匹配上一个|
+|Shift + F4|对当前打开的文件,使用新Windows窗口打开,旧窗口保留|
+|Shift + F6|对文件 / 文件夹 重命名|
+|Shift + F7|在 Debug 模式下,智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法|
+|Shift + F8|在 Debug 模式下,跳出,表现出来的效果跟 `F9` 一样|
+|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 + Alt + L|格式化代码,可以对当前文件和整个包目录使用。(有些文件格式化是有特殊要求的,比如 SQL 文件必须设置方言才可被格式化) `(必备)` |
+|Ctrl + Alt + O|优化导入的类,可以对当前文件和整个包目录使用 `(必备)` |
+|Ctrl + Alt + I|光标所在行 或 选中部分进行自动代码缩进,有点类似格式化|
+|Ctrl + Alt + T|对选中的代码弹出环绕选项弹出层 `(必备)` |
+|Ctrl + Alt + J|弹出模板选择窗口,将选定的代码加入动态模板中|
+|Ctrl + Alt + H|调用层次|
+|Ctrl + Alt + B|在某个调用的方法名上使用会跳到具体的实现处,可以跳过接口|
+|Ctrl + Alt + C|重构-快速提取常量|
+|Ctrl + Alt + F|重构-快速提取成员变量|
+|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 + 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 + 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 + 后方向键|光标放在方法名上,将方法移动到下一个方法前面,调整方法排序 `(必备)` |
## Alt + Shift
|快捷键|介绍|
|:---------|:---------|
-|Alt + Shift + N|选择 / 添加 task `(必备)` |
-|Alt + Shift + F|显示添加到收藏夹弹出层 / 添加到收藏夹|
-|Alt + Shift + C|查看最近操作项目的变化情况列表|
-|Alt + Shift + I|查看项目当前文件|
-|Alt + Shift + F7|在 Debug 模式下,下一步,进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入|
-|Alt + Shift + F9|弹出 `Debug` 的可选择菜单|
-|Alt + Shift + F10|弹出 `Run` 的可选择菜单|
-|Alt + Shift + 左键双击|选择被双击的单词 / 中文句,按住不放,可以同时选择其他单词 / 中文句 `(必备)` |
-|Alt + Shift + 前方向键|移动光标所在行向上移动 `(必备)` |
-|Alt + Shift + 后方向键|移动光标所在行向下移动 `(必备)` |
+|Alt + Shift + N|选择 / 添加 task `(必备)` |
+|Alt + Shift + F|显示添加到收藏夹弹出层 / 添加到收藏夹|
+|Alt + Shift + C|查看最近操作项目的变化情况列表|
+|Alt + Shift + I|查看项目当前文件|
+|Alt + Shift + F7|在 Debug 模式下,下一步,进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入|
+|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|复制参考信息|
+|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` 弹出层|
+|F2|跳转到下一个高亮错误 或 警告位置 `(必备)` |
+|F3|在查找模式下,定位到下一个匹配处|
+|F4|编辑源 `(必备)` |
+|F7|在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中|
+|F8|在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则不进入当前方法体内|
+|F9|在 Debug 模式下,恢复程序运行,直至下个断点或程序运行结束|
+|F11|添加书签 `(必备)` |
+|F12|回到前一个工具窗口 `(必备)` |
+|Tab|缩进 `(必备)` |
+|ESC|从工具窗口进入代码文件窗口 `(必备)` |
+|连按两次Shift|弹出 `Search Everywhere` 弹出层|
## 官网快捷键资料
diff --git a/keymap-mac-introduce.md b/keymap-mac-introduce.md
index d9e6bdaa..5e2e4dca 100644
--- a/keymap-mac-introduce.md
+++ b/keymap-mac-introduce.md
@@ -1,3 +1,4 @@
+
# IntelliJ IDEA For Mac 快捷键
- 根据官方pdf翻译:
@@ -7,31 +8,39 @@
> 建议将 Mac 系统中与 IntelliJ IDEA 冲突的快捷键取消或更改,不建议改 IntelliJ IDEA 的默认快捷键。
-#### Mac键盘符号和修饰键说明
-- `⌘` Command
-- `⇧` Shift
-- `⌥` Option
-- `⌃` Control
-- `↩︎` Return/Enter
-- `⌫` Delete
-- `⌦` 向前删除键(Fn+Delete)
-- `↑` 上箭头
-- `↓` 下箭头
-- `←` 左箭头
-- `→` 右箭头
-- `⇞` Page Up(Fn+↑)
-- `⇟` Page Down(Fn+↓)
-- `Home` Fn + ←
-- `End` Fn + →
-- `⇥` 右制表符(Tab键)
-- `⇤` 左制表符(Shift+Tab)
-- `⎋` Escape (Esc)
-
-#### 一、Editing(编辑)
+
+## Mac 键盘符号
+
+|图标|介绍|
+|:---------|:---------|
+|⌘|Command|
+|⇧|Shift|
+|⇪|Caps Lock|
+|⌥|Option = Alt|
+|⌃|Control|
+|↩|Enter|
+|⌫|Delete|
+|⌦|Fn + Delete|
+|↑|上箭头|
+|↓|下箭头|
+|←|左箭头|
+|→|右箭头|
+|⇞|Fn + ↑ = Page Up|
+|⇟|Fn + ↓ = Page Down|
+|Home|Fn + ←|
+|End|Fn + →|
+|⇥|Tab = 右制表符|
+|⇤|Shift + Tab = 左制表符|
+|⎋|Esc = Escape|
+|⏏|电源开关键|
+
+#### Editing(编辑)
+
- `Control + Space` 基本的代码补全(补全任何类、方法、变量)
- `Control + Shift + Space` 智能代码补全(过滤器方法列表和变量的预期类型)
- `Command + Shift + Enter` 自动结束代码,行末自动添加分号
- `Command + P` 显示方法的参数信息
+- `Control + J` 显示当前位置的变量、方法的 Documentation 内容
- `Control + J` 快速查看文档
- `Shift + F1` 查看外部文档(在某些代码上会触发打开浏览器显示相关文档)
- `Command + 鼠标放在代码上` 显示代码简要信息
@@ -40,13 +49,14 @@
- `Control + O` 覆盖方法(重写父类方法)
- `Control + I` 实现方法(实现接口中的方法)
- `Command + Option + T` 包围代码(使用if..else, try..catch, for, synchronized等包围选中的代码)
+- `Command + Option + Shift + 方向键左` 多行编辑、多光标同时编辑
- `Command + /` 注释/取消注释与行注释
- `Command + Option + /` 注释/取消注释与块注释
- `Option + 方向键上` 连续选中代码块
- `Option + 方向键下` 减少当前选中的代码块
- `Control + Shift + Q` 显示上下文信息
- `Option + Enter` 显示意向动作和快速修复代码
-- `Command + Option + L` 格式化代码
+- `Command + Option + L` 格式化代码(有些文件格式化是有特殊要求的,比如 SQL 文件必须设置方言才可被格式化)
- `Control + Option + O` 优化import
- `Control + Option + I` 自动缩进线
- `Tab / Shift + Tab` 缩进代码 / 反缩进代码
@@ -68,7 +78,7 @@
- `Command + Shift + 减号` 折叠所有代码块
- `Command + W` 关闭活动的编辑器选项卡
-#### 二、Search/Replace(查询/替换)
+#### Search/Replace(查询/替换)
- `Double Shift` 查询任何东西
- `Command + F` 文件内查找
- `Command + G` 查找模式下,向下查找
@@ -79,12 +89,14 @@
- `Command + Shift + S` 查询结构(Ultimate Edition 版专用,需要在Keymap中设置)
- `Command + Shift + M` 替换结构(Ultimate Edition 版专用,需要在Keymap中设置)
-#### 三、Usage Search(使用查询)
+#### Usage Search(使用查询)
+
- `Option + F7 / Command + F7` 在文件中查找用法 / 在类中查找用法
- `Command + Shift + F7` 在文件中突出显示的用法
- `Command + Option + F7` 显示用法
-#### 四、Compile and Run(编译和运行)
+#### Compile and Run(编译和运行)
+
- `Command + F9` 编译Project
- `Command + Shift + F9` 编译选择的文件、包或模块
- `Control + Option + R` 弹出 Run 的可选择菜单
@@ -93,7 +105,8 @@
- `Control + D` 调试
- `Control + Shift + R, Control + Shift + D` 从编辑器运行上下文环境配置
-#### 五、Debugging(调试)
+#### Debugging(调试)
+
- `F8` 进入下一步,如果当前行断点是一个方法,则不进入当前方法体内
- `F7` 进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中
- `Shift + F7` 智能步入,断点所在行上有多个方法调用,会弹出进入哪个方法
@@ -104,7 +117,8 @@
- `Command + F8` 切换断点(若光标当前行有断点则取消断点,没有则加上断点)
- `Command + Shift + F8` 查看断点信息
-#### 六、Navigation(导航)
+#### Navigation(导航)
+
- `Command + O` 查找类文件
- `Command + Shift + O` 查找所有类型文件、打开文件、打开目录,打开目录需要在输入的内容前面或后面加一个反斜杠`/`
- `Command + Option + O` 前往指定的变量 / 方法
@@ -114,7 +128,8 @@
- `Shift + Esc` 隐藏当前或最后一个活动的窗口,且光标进入代码文件窗口
- `Command + Shift + F4` 关闭活动run/messages/find/... tab
- `Command + L` 在当前文件跳转到某一行的指定处
-- `Command + E` 显示最近打开的文件记录列表
+- `Command + E` 显示最近打开的 **文件记录** 列表
+- `Command + Shift + E` 显示最近打开的 **文件代码位置记录** 列表
- `Option + 方向键左 / Option + 方向键右` 光标跳转到当前单词 / 中文句的左 / 右侧开头位置
- `Command + Option + 方向键左 / Command + Option + 方向键右` 退回 / 前进到上一个操作的地方
- `Command + Shift + Delete` 跳转到最后一个编辑的地方
@@ -128,8 +143,7 @@
- `Command + ] / Command + [` 移动光标到当前所在代码的花括号开始/结束位置
- `Command + F12` 弹出当前文件结构层,可以在弹出的层上直接输入进行筛选(可用于搜索类中的方法)
- `Control + H` 显示当前类的层次结构
-- `Command + Shift + H` 显示方法层次结构
-- `Control + Option + H` 显示调用层次结构
+- `Option + Shift + H` 显示调用层次结构
- `F2 / Shift + F2` 跳转到下一个/上一个突出错误或警告的位置
- `F4 / Command + 方向键下` 编辑/查看代码源
- `Option + Home` 显示到当前文件的导航条
@@ -138,7 +152,8 @@
- `Control + 0...Control + 9` 定位到对应数值的书签位置
- `Command + F3` 显示所有书签
-#### 七、Refactoring(重构)
+#### Refactoring(重构)
+
- `F5` 复制文件到指定目录
- `F6` 移动文件到指定目录
- `Command + Delete` 在文件上为安全删除文件,弹出确认框
@@ -151,17 +166,20 @@
- `Command + Option + C` 提取常量
- `Command + Option + P` 提取参数
-#### 八、VCS/Local History(版本控制/本地历史记录)
+#### VCS/Local History(版本控制/本地历史记录)
+
- `Command + K` 提交代码到版本控制器
- `Command + T` 从版本控制器更新代码
- `Option + Shift + C` 查看最近的变更记录
- `Control + C` 快速弹出版本控制器操作面板
-#### 九、Live Templates(动态代码模板)
+#### Live Templates(动态代码模板)
+
- `Command + Option + J` 弹出模板选择窗口,将选定的代码使用动态模板包住
- `Command + J` 插入自定义动态代码模板
-#### 十、General(通用)
+#### General(通用)
+
- `Command + 1...Command + 9` 打开相应编号的工具窗口
- `Command + S` 保存所有
- `Command + Option + Y` 同步、刷新
@@ -175,5 +193,6 @@
- `Shift + Command + A` 查找动作(可设置相关选项)
- `Control + Shift + Tab` 编辑窗口标签和工具窗口之间切换(如果在切换的过程加按上delete,则是关闭对应选中的窗口)
-#### 十一、Other(一些官方文档上没有体现的快捷键)
+#### Other(一些官方文档上没有体现的快捷键)
+
- `Command + Shift +8` 竖编辑模式
diff --git a/keymap-win-mac.md b/keymap-win-mac.md
index 58d1da18..52a69e50 100644
--- a/keymap-win-mac.md
+++ b/keymap-win-mac.md
@@ -1,149 +1,159 @@
# 从 Windows 过度到 Mac 必备快捷键对照表
-## Mac 键盘符号说明
-
-- `⌘` == `Command`
-- `⇧` == `Shift`
-- `⇪` == `Caps Lock`
-- `⌥` == `Option`
-- `⌃` == `Control`
-- `↩` == `Return/Enter`
-- `⌫` == `Delete`
-- `⌦` == `向前删除键(Fn+Delete)`
-- `↑` == `上箭头`
-- `↓` == `下箭头`
-- `←` == `左箭头`
-- `→` == `右箭头`
-- `⇞` == `Page Up(Fn+↑)`
-- `⇟` == `Page Down(Fn+↓)`
-- `Home` == `Fn + ←`
-- `End` == `Fn + →`
-- `⇥` == `右制表符(Tab键)`
-- `⇤` == `左制表符(Shift+Tab)`
-- `⎋` == `Escape (Esc)`
-- `⏏` == `电源开关键`
+## Mac 键盘符号
+
+|图标|介绍|
+|:---------|:---------|
+|⌘|Command|
+|⇧|Shift|
+|⇪|Caps Lock|
+|⌥|Option = Alt|
+|⌃|Control|
+|↩|Enter|
+|⌫|Delete|
+|⌦|Fn + Delete|
+|↑|上箭头|
+|↓|下箭头|
+|←|左箭头|
+|→|右箭头|
+|⇞|Fn + ↑ = Page Up|
+|⇟|Fn + ↓ = Page Down|
+|Home|Fn + ←|
+|End|Fn + →|
+|⇥|Tab = 右制表符|
+|⇤|Shift + Tab = 左制表符|
+|⎋|Esc = Escape|
+|⏏|电源开关键|
-## Ctrl
+
+## Alt
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|Ctrl + F|Command + F|在当前文件进行文本查找|
-|Ctrl + R|Command + R|在当前文件进行文本替换|
-|Ctrl + Z|Command + Z|撤销|
-|Ctrl + Y|Command + Delete|删除光标所在行 或 删除选中的行|
-|Ctrl + D|Command + D|复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面|
-|Ctrl + W|Option + 方向键上|递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围|
-|Ctrl + E|Command + E|显示最近打开的文件记录列表|
-|Ctrl + N|Command + O|根据输入的 **类名** 查找类文件|
-|Ctrl + J|Command + J|插入自定义动态代码模板|
-|Ctrl + P|Command + P|方法参数提示显示|
-|Ctrl + U|Command + U|前往当前光标所在的方法的父类的方法 / 接口定义|
-|Ctrl + B|Command + B|进入光标所在的方法/变量的接口或是定义处,等效于 `Ctrl + 左键单击` |
-|Ctrl + /|Command + /|注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号|
-|Ctrl + F1|Command + F1|在光标所在的错误代码处显示错误信息|
-|Ctrl + F11|Option + F3|选中文件 / 文件夹,使用助记符设定 / 取消书签|
-|Ctrl + F12|Command + F12|弹出当前文件结构层,可以在弹出的层上直接输入,进行筛选|
-|Ctrl + Space|Control + Space|基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 `Ctrl + 逗号`|
-|Ctrl + Delete|Option + Fn + Delete|删除光标后面的单词或是中文句|
-|Ctrl + BackSpace|Option + Delete|删除光标前面的单词或是中文句|
-|Ctrl + 1,2,3...9|Control + 1,2,3...9|定位到对应数值的书签位置|
-|Ctrl + 加号|Command + 加号|展开代码|
-|Ctrl + 减号|Command + 减号|折叠代码|
-|Ctrl + 左键单击|Control + 左键单击|在打开的文件标题上,弹出该文件路径|
-|Ctrl + 左方向键|Option + 左方向键|光标跳转到当前单词 / 中文句的左侧开头位置|
-|Ctrl + 右方向键|Option + 右方向键|光标跳转到当前单词 / 中文句的右侧开头位置|
-|Ctrl + 前方向键|预设中没有该快捷键|等效于鼠标滚轮向前效果|
-|Ctrl + 后方向键|预设中没有该快捷键|等效于鼠标滚轮向后效果|
+|Alt + \`|Control + V|显示版本控制常用操作菜单弹出层|
+|Alt + F1|Option + F1|显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择|
+|Alt + F7|Option + F7|查询所选对象/变量被引用|
+|Alt + Enter|Option + Enter|IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同|
+|Alt + Insert|Command + N|代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等|
+|Alt + 左方向键|Control + 左方向键|切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换|
+|Alt + 右方向键|Control + 右方向键|切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换|
+|Alt + 前方向键|Control + 前方向键|当前光标跳转到当前文件的前一个方法名位置|
+|Alt + 后方向键|Control + 后方向键|当前光标跳转到当前文件的后一个方法名位置|
+|Alt + 1,2,3...9|Command + 1,2,3...9|显示对应数值的选项卡,其中 1 是 Project 用得最多|
-## Alt
+## Ctrl
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|Alt + \`|Control + V|显示版本控制常用操作菜单弹出层|
-|Alt + F1|Option + F1|显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择|
-|Alt + F7|Option + F7|查询所选对象/变量被引用|
-|Alt + Enter|Option + Enter|IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同|
-|Alt + Insert|Command + N|代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等|
-|Alt + 左方向键|Control + 左方向键|切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换|
-|Alt + 右方向键|Control + 右方向键|切换当前已打开的窗口中的子视图,比如Debug窗口中有Output、Debugger等子视图,用此快捷键就可以在子视图中切换|
-|Alt + 前方向键|Control + 前方向键|当前光标跳转到当前文件的前一个方法名位置|
-|Alt + 后方向键|Control + 后方向键|当前光标跳转到当前文件的后一个方法名位置|
-|Alt + 1,2,3...9|Command + 1,2,3...9|显示对应数值的选项卡,其中 1 是 Project 用得最多|
+|Ctrl + F|Command + F|在当前文件进行文本查找|
+|Ctrl + R|Command + R|在当前文件进行文本替换|
+|Ctrl + Z|Command + Z|撤销|
+|Ctrl + G|Command + L|跳转到指定行数位置|
+|Ctrl + Y|Command + Delete|删除光标所在行 或 删除选中的行|
+|Ctrl + D|Command + D|复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面|
+|Ctrl + W|Option + 方向键上|递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围|
+|Ctrl + E|Command + E|显示最近打开的文件记录列表|
+|Ctrl + N|Command + O|根据输入的 **类名** 查找类文件|
+|Ctrl + J|Command + J|插入自定义动态代码模板|
+|Ctrl + P|Command + P|方法参数提示显示|
+|Ctrl + Q|Control + J|当前位置变量、方法的 Documentation 内容显示|
+|Ctrl + U|Command + U|前往当前光标所在的方法的父类的方法 / 接口定义|
+|Ctrl + B|Command + B|进入光标所在的方法/变量的接口或是定义处,等效于 `Ctrl + 左键单击` |
+|Ctrl + /|Command + /|注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号|
+|Ctrl + F1|Command + F1|在光标所在的错误代码处显示错误信息|
+|Ctrl + F11|Option + F3|选中文件 / 文件夹,使用助记符设定 / 取消书签|
+|Ctrl + F12|Command + F12|弹出当前文件结构层,可以在弹出的层上直接输入,进行筛选|
+|Ctrl + Space|Control + Space|基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 `Ctrl + 逗号`|
+|Ctrl + Delete|Option + Fn+ Delete|删除光标后面的单词或是中文句|
+|Ctrl + BackSpace|Option + Delete|删除光标前面的单词或是中文句|
+|Ctrl + 1,2,3...9|Control + 1,2,3...9|定位到对应数值的书签位置|
+|Ctrl + 加号|Command + 加号|展开代码|
+|Ctrl + 减号|Command + 减号|折叠代码|
+|Ctrl + 左键单击|Control + 左键单击|在打开的文件标题上,弹出该文件路径|
+|Ctrl + 左方向键|Option + 左方向键|光标跳转到当前单词 / 中文句的左侧开头位置|
+|Ctrl + 右方向键|Option + 右方向键|光标跳转到当前单词 / 中文句的右侧开头位置|
+|Ctrl + 前方向键|预设中没有该快捷键|等效于鼠标滚轮向前效果|
+|Ctrl + 后方向键|预设中没有该快捷键|等效于鼠标滚轮向后效果|
+
## Shift
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|Shift + F11|Command + F3|弹出书签显示层|
-|Shift + Tab|Shift + Tab|取消缩进|
-|Shift + Enter|Shift + Enter|开始新一行。光标所在行下空出一行,光标定位到新行位置|
-|Shift + 左键单击|Shift + 左键单击|在打开的文件名上按此快捷键,可以关闭当前打开文件|
+|Shift + F11|Command + F3|弹出书签显示层|
+|Shift + Tab|Shift + Tab|取消缩进|
+|Shift + Enter|Shift + Enter|开始新一行。光标所在行下空出一行,光标定位到新行位置|
+|Shift + 左键单击|Shift + 左键单击|在打开的文件名上按此快捷键,可以关闭当前打开文件|
-## Ctrl + Alt
+
+## Alt + Shift
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|Ctrl + Alt + L|Command + Option + L|格式化代码,可以对当前文件和整个包目录使用|
-|Ctrl + Alt + O|Control + Option + O|优化导入的类,可以对当前文件和整个包目录使用|
-|Ctrl + Alt + T|Command + Option + T|对选中的代码弹出环绕选项弹出层|
-|Ctrl + Alt + S|Command + 逗号|打开 IntelliJ IDEA 系统设置|
-|Ctrl + Alt + Enter|Command + Option + Enter|光标所在行上空出一行,光标定位到新行|
-|Ctrl + Alt + 左方向键|Command + Option + 左方向键|退回到上一个操作的地方|
-|Ctrl + Alt + 右方向键|Command + Option + 右方向键|前进到上一个操作的地方|
+|Alt + Shift + N|Option + Shift + N|选择 / 添加 task|
+|Alt + Shift + 左键双击|Option + Shift + 左键双击|选择被双击的单词 / 中文句,按住不放,可以同时选择其他单词 / 中文句|
+|Alt + Shift + 前方向键|Option + Shift + 前方向键|移动光标所在行向上移动|
+|Alt + Shift + 后方向键|Option + Shift + 后方向键|移动光标所在行向下移动|
-## Ctrl + Shift
+
+## Ctrl + Alt
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|Ctrl + Shift + F|Command + Shift + F|根据输入内容查找整个项目 或 指定目录内文件|
-|Ctrl + Shift + R|Command + Shift + F|根据输入内容替换对应内容,范围为整个项目 或 指定目录内文件|
-|Ctrl + Shift + J|Control + Shift + J|自动将下一行合并到当前行末尾|
-|Ctrl + Shift + Z|Command + Shift + Z|取消撤销|
-|Ctrl + Shift + W|Option + 方向键下|递进式取消选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展取消选中范围|
-|Ctrl + Shift + N|Command + Shift + O|通过文件名定位 / 打开文件 / 目录,打开目录需要在输入的内容后面多加一个正斜杠|
-|Ctrl + Shift + U|Command + Shift + U|对选中的代码进行大 / 小写轮流转换|
-|Ctrl + Shift + T|Command + Shift + T|对当前类生成单元测试类,如果已经存在的单元测试类则可以进行选择|
-|Ctrl + Shift + C|Command + Shift + C|复制当前文件磁盘路径到剪贴板|
-|Ctrl + Shift + B|Control + Shift + B|跳转到类型声明处|
-|Ctrl + Shift + /|Command + Option + /|代码块注释|
-|Ctrl + Shift + \[|Command + Shift + \[|选中从光标所在位置到它的顶部中括号位置|
-|Ctrl + Shift + \]|Command + Shift + \]|选中从光标所在位置到它的底部中括号位置|
-|Ctrl + Shift + 加号|Command + Shift + 加号|展开所有代码|
-|Ctrl + Shift + 减号|Command + Shift + 减号|折叠所有代码|
-|Ctrl + Shift + F7|Command + Shift + F7|高亮显示所有该选中文本,按Esc高亮消失|
-|Ctrl + Shift + F12|Command + Shift + F12|编辑器最大化|
-|Ctrl + Shift + Enter|Command + Shift + Enter|自动结束代码,行末自动添加分号|
-|Ctrl + Shift + Backspace|Ctrl + Shift + Backspace|退回到上次修改的地方|
-|Ctrl + Shift + 1,2,3...9|Control + Shift + 1,2,3...9|快速添加指定数值的书签|
-|Ctrl + Shift + 左键单击|Command + Shift + 左键单击|把光标放在某个类变量上,按此快捷键可以直接定位到该类中|
-|Ctrl + Shift + 左方向键|Option + Shift + 左方向键|在代码文件上,光标跳转到当前单词 / 中文句的左侧开头位置,同时选中该单词 / 中文句|
-|Ctrl + Shift + 右方向键|Option + Shift + 右方向键|在代码文件上,光标跳转到当前单词 / 中文句的右侧开头位置,同时选中该单词 / 中文句|
-|Ctrl + Shift + 前方向键|Command + Shift + 前方向键|光标放在方法名上,将方法移动到上一个方法前面,调整方法排序|
-|Ctrl + Shift + 后方向键|Command + Shift + 后方向键|光标放在方法名上,将方法移动到下一个方法前面,调整方法排序|
+|Ctrl + Alt + L|Command + Option + L|格式化代码,可以对当前文件和整个包目录使用(有些文件格式化是有特殊要求的,比如 SQL 文件必须设置方言才可被格式化)|
+|Ctrl + Alt + O|Control + Option + O|优化导入的类,可以对当前文件和整个包目录使用|
+|Ctrl + Alt + T|Command + Option + T|对选中的代码弹出环绕选项弹出层|
+|Ctrl + Alt + S|Command + 逗号|打开 IntelliJ IDEA 系统设置|
+|Ctrl + Alt + Enter|Command + Option + Enter|光标所在行上空出一行,光标定位到新行|
+|Ctrl + Alt + 左方向键|Command + Option + 左方向键|退回到上一个操作的地方|
+|Ctrl + Alt + 右方向键|Command + Option + 右方向键|前进到上一个操作的地方|
-## Alt + Shift
+## Ctrl + Shift
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|Alt + Shift + N|Option + Shift + B|选择 / 添加 task|
-|Alt + Shift + 左键双击|Option + Shift + 左键双击|选择被双击的单词 / 中文句,按住不放,可以同时选择其他单词 / 中文句|
-|Alt + Shift + 前方向键|Option + Shift + 前方向键|移动光标所在行向上移动|
-|Alt + Shift + 后方向键|Option + Shift + 后方向键|移动光标所在行向下移动|
+|Ctrl + Shift + F|Command + Shift + F|根据输入内容查找整个项目 或 指定目录内文件|
+|Ctrl + Shift + R|Command + Shift + R|根据输入内容替换对应内容,范围为整个项目 或 指定目录内文件|
+|Ctrl + Shift + J|Control + Shift + J|自动将下一行合并到当前行末尾|
+|Ctrl + Shift + Z|Command + Shift + Z|取消撤销|
+|Ctrl + Shift + W|Option + 方向键下|递进式取消选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展取消选中范围|
+|Ctrl + Shift + N|Command + Shift + O|通过文件名定位 / 打开文件 / 目录,打开目录需要在输入的内容后面多加一个正斜杠|
+|Ctrl + Shift + U|Command + Shift + U|对选中的代码进行大 / 小写轮流转换|
+|Ctrl + Shift + T|Command + Shift + T|对当前类生成单元测试类,如果已经存在的单元测试类则可以进行选择|
+|Ctrl + Shift + C|Command + Shift + C|复制当前文件磁盘路径到剪贴板|
+|Ctrl + Shift + B|Control + Shift + B|跳转到类型声明处|
+|Ctrl + Shift + H|Option + Shift + H|显示层次结构|
+|Ctrl + Shift + /|Command + Option + /|代码块注释|
+|Ctrl + Shift + \[|Command + Shift + \[|选中从光标所在位置到它的顶部中括号位置|
+|Ctrl + Shift + \]|Command + Shift + \]|选中从光标所在位置到它的底部中括号位置|
+|Ctrl + Shift + 加号|Command + Shift + 加号|展开所有代码|
+|Ctrl + Shift + 减号|Command + Shift + 减号|折叠所有代码|
+|Ctrl + Shift + F7|Command + Shift + F7|高亮显示所有该选中文本,按Esc高亮消失|
+|Ctrl + Shift + F12|Command + Shift + F12|编辑器最大化|
+|Ctrl + Shift + Enter|Command + Shift + Enter|自动结束代码,行末自动添加分号|
+|Ctrl + Shift + Backspace|Ctrl + Shift + Backspace|退回到上次修改的地方|
+|Ctrl + Shift + 1,2,3...9|Control + Shift + 1,2,3...9|快速添加指定数值的书签|
+|Ctrl + Shift + 左键单击|Command + Shift + 左键单击|把光标放在某个类变量上,按此快捷键可以直接定位到该类中|
+|Ctrl + Shift + 左方向键|Option + Shift + 左方向键|在代码文件上,光标跳转到当前单词 / 中文句的左侧开头位置,同时选中该单词 / 中文句|
+|Ctrl + Shift + 右方向键|Option + Shift + 右方向键|在代码文件上,光标跳转到当前单词 / 中文句的右侧开头位置,同时选中该单词 / 中文句|
+|Ctrl + Shift + 前方向键|Command + Shift + 前方向键|光标放在方法名上,将方法移动到上一个方法前面,调整方法排序|
+|Ctrl + Shift + 后方向键|Command + Shift + 后方向键|光标放在方法名上,将方法移动到下一个方法前面,调整方法排序|
## Ctrl + Shift + Alt
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|Ctrl + Shift + Alt + V|Command + Shift + Option + V|无格式黏贴|
-|Ctrl + Shift + Alt + S|Command + ;|打开当前项目设置|
+|Ctrl + Shift + Alt + V|Command + Shift + Option + V|无格式黏贴|
+|Ctrl + Shift + Alt + S|Command + ;|打开当前项目设置|
+
-## 其他
+## Other
|Win 快捷键|Mac 快捷键|介绍|
|:---------|:---------|:---------|
-|F2|F2|跳转到下一个高亮错误 或 警告位置|
-|F4|F4|编辑源|
-|F11|F3|添加书签|
-|F12|F12|回到前一个工具窗口|
-|Tab|Tab|缩进|
-|ESC|ESC|从工具窗口进入代码文件窗口|
+|F2|F2|跳转到下一个高亮错误 或 警告位置|
+|F4|F4|编辑源|
+|F11|F3|添加书签|
+|F12|F12|回到前一个工具窗口|
+|Tab|Tab|缩进|
+|ESC|ESC|从工具窗口进入代码文件窗口|
diff --git a/live-templates-introduce.md b/live-templates-introduce.md
index ee33cd3a..5e996a8d 100644
--- a/live-templates-introduce.md
+++ b/live-templates-introduce.md
@@ -17,11 +17,11 @@
> * 如上图标注所示,实时代码模板本质是用 XML 文件来保存的,所以传播自己的实时代码模板只要传播对应的文件即可。
> * IntelliJ IDEA 的实时代码模板保存在 `/templates` 目录下,其他系统目录位置如下:(因为目录名在各个系统上是一致的,建议用硬盘搜索工具搜索即可)
>
->> * Windows: \.\config\templates
->> * Linux: ~/./config/templates
->> * OS X: ~/Library/Preferences//templates
+>> * Windows: `C:\Users\youmeek\.IntelliJIdea2017.2\config`
+>> * Linux: `~/./config/templates`
+>> * OS X: `~/Library/Preferences/IdeaIC2017.2/templates`
-调用常规的实时代码模板主要是通过两个快捷键:`Tab` 和 `Ctrl + J`。虽然 IntelliJ IDEA 支持修改此对应的快捷键,但是默认大家都是这样使用的,所以没有特别愿意就不要去改。
+调用常规的实时代码模板主要是通过两个快捷键:`Tab` 和 `Ctrl + J`。虽然 IntelliJ IDEA 支持修改此对应的快捷键,但是默认大家都是这样使用的,所以没有特别原因就不要去改。
该两个快捷键的使用方法:如第一张 Gif 演示图所示,在输入 `sys` 后按 `Tab` 键,即立即生成预设语句。如果按 `Ctrl + J` 则会先提示与之匹配的实时代码模板介绍,然后还需按 `Enter` 才可完成预设语句的生成。
diff --git a/mac-install.md b/mac-install.md
index b19ed781..406f4755 100644
--- a/mac-install.md
+++ b/mac-install.md
@@ -7,7 +7,7 @@
> * 内存:最低要求 1 G,推荐 2 G 以上
> * 硬盘:最低要求 2 G
> * 显示器:最低要求 1024 X 768 分辨率
-> * 更多信息可以阅读:
+> * 更多信息可以阅读:
## 重要说明
diff --git a/make-introduce.md b/make-introduce.md
index 566bad4f..234d8f3b 100644
--- a/make-introduce.md
+++ b/make-introduce.md
@@ -5,17 +5,18 @@
相比较于 Eclipse 的实时自动编译,IntelliJ IDEA 的编译更加手动化,虽然 IntelliJ IDEA 也支持通过设置开启实时编译,但是不建议,因为太占资源了。IntelliJ IDEA 编译方式除了手工点击编译按钮进行编译之外,还有就是在容器运行之前配置上一个编译事件,先编译后运行。默认下 IntelliJ IDEA 也都是这样的设置,所以实际开发中你也不用太注意编译这件事。虽然 IntelliJ IDEA 没有实时编译,但是对于代码检查完全是没有影响。但是多个类之间的关联关系还是要等 Make 或 Rebuild 触发的时候才会做相关检查的。
在 IntelliJ IDEA 里,编译方式一共有三种:
-> * Compile:对选定的目标(Java 类文件),进行强制性编译,不管目标是否是被修改过。
+> * Compile:对选定的目标(Java 类文件),进行强制性编译,不管目标是否是被修改过。注:2018版操作为Recompile。
> * Rebuild:对选定的目标(Project),进行强制性编译,不管目标是否是被修改过,由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。
-> * Make:使用最多的编译操作。对选定的目标(Project 或 Module)进行编译,但只编译有修改过的文件,没有修改过的文件不会编译,这样平时开发大型项目才不会浪费时间在编译过程中。
+> * Make:使用最多的编译操作。对选定的目标(Project 或 Module)进行编译,但只编译有修改过的文件,没有修改过的文件不会编译,这样平时开发大型项目才不会浪费时间在编译过程中。注:2018版操作为Build。
## 编译触发按钮

-> * 如上图标注 1 所示,Compile 的操作有:`Compile` 指定类
-> * 如上图标注 1 所示,Rebuild 的操作有:`Rebuild Project`
> * 如上图标注 1 所示,Make 的操作有:`Make Project`、`Make Module`
+> * 如上图标注 2 所示,Compile 的操作有:`Compile` 指定类
+> * 如上图标注 3 所示,Rebuild 的操作有:`Rebuild Project`
+
## 运行之前的编译
@@ -44,4 +45,4 @@
> * 如上图动态 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
+> * `Per-module bytecode version` 可以针对 `Project` 下各个 `Module` 的特殊需求单独设置不同的 `bytecode version`,前提是电脑上必须有安装对应的 JDK 版本。
diff --git a/maven-java-web-project-introduce.md b/maven-java-web-project-introduce.md
index 94200891..ec3e7b65 100644
--- a/maven-java-web-project-introduce.md
+++ b/maven-java-web-project-introduce.md
@@ -28,14 +28,14 @@
- 所有编码:UTF-8
-## 演示内容
+## 视频中项目源码
- 环境相关:
- - Maven 环境说明:
- - 我的 Maven 环境分享下载:
- - 建议你也跟我一样直接解压在 D 盘根目录,这样其他就不需要设置了
- - Git 环境的说明:
+ - [Maven 配置文件](maven-skill-introduce.md)
+ - 我的 Maven 本地依赖包环境下载:
+ - 建议你也跟我一样直接解压在 D 盘根目录,这样其他就不需要设置了
+ - Git 环境的说明(默认安装):
- IntelliJ IDEA 基础教程系列:
---
@@ -66,4 +66,4 @@
- JSP 页面直接点击请求地址直接跳转到 Controller
- 静态资源映射特别提醒下,比如你做图片上传等等,如果你没有映射好可能都会遇到 404
- 查看 Druid 提供监控
- - 演示用 Mybatis 插件自动生成代码
\ No newline at end of file
+ - 演示用 Mybatis 插件自动生成代码
diff --git a/maven-java-web-project-introduce2.md b/maven-java-web-project-introduce2.md
index 5ab87d23..67ad51d6 100644
--- a/maven-java-web-project-introduce2.md
+++ b/maven-java-web-project-introduce2.md
@@ -1,4 +1,4 @@
-# Maven 的单模块 / 多模块之 Spring MVC + Spring + Spring Data JPA 项目(基于 IntelliJ IDEA)
+# Maven 的单模块 / 多模块之 Spring MVC + Spring + Spring Data JPA 项目
## 初衷
@@ -15,7 +15,7 @@
## 开发环境
- JDK 7(理论上支持 JDK 6、JDK 7、JDK 8)
-- Mysql 5.6
+- MySQL 5.6
- Maven 3.1.1
- Tomcat 7
- Git 2.7.0.2-64-bit
diff --git a/maven-project-introduce.md b/maven-project-introduce.md
index f8c5899f..cc0af4bb 100644
--- a/maven-project-introduce.md
+++ b/maven-project-introduce.md
@@ -4,13 +4,14 @@
相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建。
-学习本讲还有一个前提:你必须会 Maven 相关知识点,Maven 相关知识点是不在本专题的讲解范围里面的,所以请自己私下进行学习。如果愿意你也可以看我过去整理的一份材料:
+学习本讲还有一个前提:你必须会 Maven 相关知识点,Maven 相关知识点是不在本专题的讲解范围里面的,所以请自己私下进行学习。如果愿意你也可以看我过去整理的一份视频(提取码:wh5g):
## Maven 常用设置介绍

> * 如上图标注 1 所示,我们可以指定我们本地 Maven 的安装目录所在,因为我已经配置了 `MAVEN_HOME` 系统参数,所以直接这样配置 IntelliJ IDEA 是可以找到的。但是假如你没有配置的话,这里可以选择你的 Maven 安装目录。
+> * 如上图标注 1 上面的 Threads 中可以设置多个线程数,比如填写:2(线程数并不一定是越多越快,需要执行测试)
> * 如上图标注 2 所示,我们还可以指定 Maven 的 `settings.xml` 位置和本地仓库位置。

diff --git a/maven-skill-introduce.md b/maven-skill-introduce.md
new file mode 100644
index 00000000..60c9ae95
--- /dev/null
+++ b/maven-skill-introduce.md
@@ -0,0 +1,340 @@
+# IntelliJ IDEA 配合 Maven 的一些技巧
+
+## 环境
+
+- IntelliJ IDEA 2017.1
+- Maven 3.3.9
+- Nexus 3.2.1
+
+## 学习前提
+
+- 了解 Maven 配置的基本用法
+- 了解私有仓库,比如 nexus 的一些概念
+- **强烈建议把 Maven 的 settings.xml 文件同时放在:`%USER_HOME%/.m2/settings.xml` 和 `${maven.home}/conf/settings.xml` 两个地方。避免使用终端的时候默认去调用用户目录下的**
+
+### Maven 中的 profile
+
+- Maven 中有一个概念叫做:`profile`,它的诞生主要是为了解决不同环境所需的不同变量、配置等问题。
+- 有了 profile,可以根据激活的条件,启动不同条件下的配置信息。
+- profile 是可以有多个的,也可以同时激活多个 profile,方便自由组合。
+- profile 一般可以在三个地方:settings.xml,pom.xml,profiles.xml(这个不常用)
+- 在 settings.xml 上,一般大家用来做仓库的选择,比如以下 settings.xml 代码:
+
+``` xml
+
+
+
+
+ D:\maven\my_local_repository
+
+
+
+
+
+
+
+
+
+ nexus
+
+
+ nexus
+ http://192.168.1.73:8081/repository/maven-public/
+
+ true
+
+
+ true
+
+
+
+
+
+ nexus
+ http://192.168.1.73:8081/repository/maven-public/
+
+ true
+
+
+ true
+
+
+
+
+
+ aliyun
+
+
+ aliyun
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+ true
+
+
+ true
+
+
+
+
+
+ aliyun
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+ nexus
+
+
+
+```
+
+- 以上代码中 profile 就做一件事:设置全局的 profile,一个是 nexus 仓库,一个是 aliyun 仓库,默认激活的是 nexus 仓库。(activeProfiles)
+- 在 pom.xml 中,一般用来激活环境配置,比如以下代码:
+
+``` xml
+
+
+ dev
+
+ dev
+
+
+ true
+
+
+
+
+ src/main/resources
+
+ **/*
+
+ true
+
+
+ src/main/env/${package.environment}
+
+ **/*
+
+ true
+
+
+ ${project.artifactId}
+
+
+
+ product
+
+ product
+
+
+ false
+
+
+
+
+ src/main/resources
+
+ **/*
+
+ true
+
+
+ src/main/env/${package.environment}
+
+ **/*
+
+ true
+
+
+ ${project.artifactId}
+
+
+
+```
+
+- 以上代码中 profile 就做一件事:打包的时候,默认是 dev 模式,打包 src/main/env/dev 下的配置文件,如果选择 product 则打包 src/main/env/product 下的配置文件
+
+### IntelliJ IDEA 使用 Maven Profile 的案例
+
+- 在 IntelliJ IDEA 上调用 profile 简单,如下图勾选对应的复选框即可,可以多选。
+
+
+
+- 只使用 aliyun 仓库可以这样配置 settings.xml:
+
+``` xml
+
+
+
+
+ D:\maven\my_local_repository
+
+
+
+
+
+
+
+
+
+ aliyun
+
+
+ aliyun
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+ true
+
+
+ true
+
+
+
+
+
+ aliyun
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+ aliyun
+
+
+
+```
+
+- 使用 nexus + aliyun 仓库可以这样配置 settings.xml:
+
+``` xml
+
+
+
+
+ D:\maven\my_local_repository
+
+
+
+
+
+
+
+
+
+ nexus
+
+
+ nexus
+ http://192.168.1.73:8081/repository/maven-public/
+
+ true
+
+
+ true
+
+
+
+
+
+ nexus
+ http://192.168.1.73:8081/repository/maven-public/
+
+ true
+
+
+ true
+
+
+
+
+
+ aliyun
+
+
+ aliyun
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+ true
+
+
+ true
+
+
+
+
+
+ aliyun
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+ nexus
+
+
+
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins-develop.md b/plugins-develop.md
index 5a2a21ae..31ca3f9b 100644
--- a/plugins-develop.md
+++ b/plugins-develop.md
@@ -4,6 +4,40 @@
- IntelliJ IDEA 的插件理论上是同时也适用于 JetBrains 公司下的其他大多数 IDE 的,因为这些 IDE 都是基于 IntelliJ IDEA 的基础平台进行开发的,请牢记这一点。
+## 环境准备
+
+- 当前时间:2024-09
+- 官网说明:
+- 从 2023.3 版本开始不在自带 Plugin DevKit 插件,所以你想要开发 IntelliJ IDEA 插件需要先安装 Plugin DevKit
+- 官网提供了一个样板项目:
+- 当前 JDK 最低要求 17
+- Gradle 开发环境搭建:
+- 设置 Plugin SDK:
+- 推荐使用 IntelliJ IDEA Community Edition 版本,有一些依赖加载快、源码可以点击直接查看
+
+## 文档
+
+- 官网文档:
+- 官网示例:
+- 其他文档:
+ -
+ -
+
+
+## 运行调试方法
+
+- 右上角运行区域,下拉选择: Run Plugin,点击 Debug,会启动一个新的 IntelliJ IDEA UI 界面,它会自动帮我们安装正在开发的插件
+- 并且当前环境是 debug 状态,你在源码设置了断点,执行到该断点后可以被阻断
+
+
+## 打包
+
+- 选择右侧 Gradle > Tasks > build > assemble,项目根目录会有一个 build/distributions 目录生成,可以看到一个 zip 文件。可以用它来安装和发布。
+
+
+
+-------------------------------------------------------------------
+
## 教程视频下载和介绍
- 视频章节结构:
@@ -16,8 +50,7 @@
- `07_翻译插件显示气泡`
- `08_把插件上传到公共仓库`
- 视频教程下载地址
- - 原下载地址:
- - 备用下载地址:,密码:gqo2,如果哪天下载地址失效,请在本 Github 项目发 Issues。
+ - 下载地址:,密码:gnpl,如果哪天下载地址失效,请在本 Github 项目发 Issues。
- 这套教程视频不是本人录制的,所以需要特别强调下,本套视频来自:[传智播客公开课:Android Studio插件开发](http://open.itcast.cn/java/14-539.html),在此特别感谢别人的付出(鞠躬)。
## 其他图文资料介绍
@@ -53,5 +86,6 @@
-
-
-
+-
diff --git a/plugins-settings.md b/plugins-settings.md
index 93f3346a..07c1e3ba 100644
--- a/plugins-settings.md
+++ b/plugins-settings.md
@@ -39,21 +39,68 @@
## 插件推荐
-|插件名称 |插件介绍 |官网地址 |
-|:-----------------|:----------|:--------------|
-|IDE Features Trainer|IntelliJ IDEA 官方出的学习辅助插件||
-|Key promoter|快捷键提示||
-|Grep Console|自定义设置控制台输出颜色||
-|String Manipulation|驼峰式命名和下划线命名交替变化||
-|CheckStyle-IDEA|代码规范检查||
-|FindBugs-IDEA|潜在 Bug 检查||
-|MetricsReloaded|代码复杂度检查||
-|Statistic|代码统计||
-|JRebel Plugin|热部署||
-|CodeGlance|在编辑代码最右侧,显示一块代码小地图||
-|GsonFormat|把 JSON 字符串直接实例化成类||
-|MultiMarkdown|书写 Markdown 文章||
-|Eclipse Code Formatter|使用 Eclipse 的代码格式化风格,在一个团队中如果公司有规定格式化风格,这个可以使用。||
-|Jindent-Source Code Formatter|自定义类、方法、doc、变量注释模板||
-|ECTranslation|翻译插件||
-
+|编号|插件名称 |插件介绍 |官网地址 |
+|:---|:-----------------|:----------|:--------------|
+|01|.ignore|各类版本控制忽略文件生成工具||
+|02|Alibaba Java Coding Guidelines|阿里巴巴出的代码规范检查插件||
+|03|Alibaba Cloud Toolkit|阿里云辅助开发工具||
+|04|BashSupport|Bash 支持||
+|05|CheckStyle-IDEA|代码规范检查||
+|06|Eclipse Code Formatter|使用 Eclipse 的代码格式化风格,在一个团队中如果公司有规定格式化风格,这个可以使用。||
+|07|FindBugs-IDEA|潜在 Bug 检查||
+|08|Gitee|开源中国的码云插件||
+|09|Grep Console|自定义设置控制台输出颜色||
+|10|Git Flow Integration|Git Flow 的图形界面操作||
+|11|GsonFormatPlus|把 JSON 字符串直接实例化成类||
+|12|Json2Pojo|根据 JSON 生成 POJO,根据 POJO 生成 JSON||
+|13|GenerateAllSetter|new POJO类的快速生成 set 方法||
+|14|IDE Features Trainer|IntelliJ IDEA 官方出的学习辅助插件||
+|15|JRebel Plugin|热部署||
+|16|Jindent-Source Code Formatter|自定义类、方法、doc、变量注释模板||
+|17|Key promoter|快捷键提示||
+|18|kubernetes|kubernetes 辅助工具||
+|19|Lombok Plugin|Lombok 功能辅助插件||
+|20|MetricsReloaded|代码复杂度检查||
+|21|Maven Helper|Maven 辅助插件||
+|22|Markdown Navigator|书写 Markdown 文章||
+|23|MybatisX|mybatis 框架辅助(免费)||
+|24|MyBatis Log Plugin|Mybatis SQL 提取||
+|25|MapStruct Support|对 MapStruct 属性转换支持||
+|26|OnlineSearch|选择文本后支持不同搜索引擎进行搜索||
+|27|Properties to YAML Converter|把 Properties 的配置格式改为 YAML 格式||
+|28|RestfulToolkit|方便查找 Spring MVC 的 RequestMapping||
+|29|Rainbow Brackets|对各个对称括号进行着色,方便查看||
+|30|String Manipulation|驼峰式命名和下划线命名交替变化||
+|31|Statistic|代码统计||
+|32|Scala|对 Scala 支持||
+|33|Translation|翻译插件||
+|34|VisualVM Launcher|项目启动的时候也启动 VisualVM||
+|35|arthas idea|阿里 arthas 支持||
+|36|Multirun|启动多应用||
+|37|BrowseWordAtCaret|简单代替Ctrl+F,通过快捷键的方式直接跳转到下个同单词位置||
+|38|CodeGlance2|在编辑代码最右侧,显示一块代码小地图,前端代码适合||
+|39|Save Actions|在保存代码时触发一系列自定义操作,比如优化导入包、格式化、添加删除部分代码等||
+|40|MurphySec Code Scan|检测依赖包相关安全问题||
+|41|MetricsReloaded|圈复杂度(Cyclomatic complexity)代码复杂度检查||
+|42|MybatisLogFormat|控制台 MyBatis SQL 输出补全参数||
+|43|JetBrains Academy|帮助学习开发语言: Kotlin, Java, Python, JavaScript, Rust, Scala, C/C++, Go, PHP||
+|44|WeChat Mini Program|官方支持||
+|45|Git Commit Message Helper|一个可帮助您标准化提交内容的插件||
+|46|LogIt|快速插入 Javascript console.log||
+|47|Uniapp Tool|Uniapp 支持||
+|48|Json Helper|JSON格式化,特别的地方在于可以处理子对象字符串中的JSON||
+|49|Inspection Lens|以内联方式显示错误、警告和其他检查||
+|50|batslog|Mybatis SQL 格式化||
+|51|MultiHighlight|使用自定义颜色突出显示标识符,有助于读取源代码||
+|52|CodeGlance Pro|在编辑器窗格中显示类似于 Sublime 中的缩小概览或小地图||
+|53|Indent Rainbow|使缩进更具可读性||
+|54|Rainbow Brackets Lite|Rainbow Brackets 免费版本||
+|55|Spring Debugger|JetBrains 官方编写的 Spring 辅助插件||
+
+
+## lombok 插件的使用
+
+- lombok 插件官网:
+- 推荐 IntelliJ IDEA 插件库搜索安装:
+ - File > Settings > Plugins > Browse repositories... > Search for "lombok" > Install Plugin
+- IntelliJ IDEA 配置方法,官网有说明(该配置是 Project 级别,不是 IDE 全局的):
diff --git a/project-composition-introduce.md b/project-composition-introduce.md
index 2ce7a62b..1e99b8f2 100644
--- a/project-composition-introduce.md
+++ b/project-composition-introduce.md
@@ -19,7 +19,7 @@
> * 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.
>
->> * 链接地址:
+>> * 20170630 更新新地址:
对于 Module,IntelliJ IDEA 是这样解释的:
@@ -28,7 +28,7 @@
> * 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.
>
->> * 链接地址:
+>> * 20170630 更新新地址:
通过上面的介绍我们知道,在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目结构都是类似这种多 Module 结构,这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间应该都是处于同一个项目业务情况下的模块,彼此之间是有不可分割的业务关系的。
@@ -94,11 +94,11 @@
对于大型项目,各个 Module 用到的 `SDK` 和 `language level` 很有可能是各不一样的,IntelliJ IDEA 对此也进行了支持。
-
+
> * 如上图标注 1 所示,可以针对 Module 选择其他 SDK,默认选择的是 `Project SDK`
-
+
> * 如上图标注 1 所示,可以针对 Module 选择其他 `language level`,默认选择的是 `Project language level`
diff --git a/settings-introduce-1.md b/settings-introduce-1.md
index 98d72bbf..5c41e75c 100644
--- a/settings-introduce-1.md
+++ b/settings-introduce-1.md
@@ -1,4 +1,4 @@
-# IntelliJ IDEA 常用设置讲解
+# IntelliJ IDEA 常用设置讲解 - 1
## 说明
@@ -6,112 +6,52 @@ IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也
## 常用设置
-
-
-> * IntelliJ IDEA 的代码提示和补充功能有一个特性:区分大小写。如上图标注 1 所示,默认就是 `First letter` 区分大小写的。
-> * 区分大小写的情况是这样的:比如我们在 Java 代码文件中输入 `stringBuffer` IntelliJ IDEA 是不会帮我们提示或是代码补充的,但是如果我们输入 `StringBuffer` 就可以进行代码提示和补充。
-> * 如果想不区分大小写的话,改为 `None` 选项即可。

-> * 如上图 Gif 所示,该功能用来快速设置代码检查等级。我个人一般在编辑大文件的时候会使用该功能。IntelliJ IDEA 对于编辑大文件并没有太大优势,很卡,原因就是它有各种检查,这样是非常耗内存和 CPU 的,所以为了能加快大文件的读写,我一般会暂时性设置为 `None`。
-
->> * `Inspections` 为最高等级检查,可以检查单词拼写,语法错误,变量使用,方法之间调用等。
->> * `Syntax` 可以检查单词拼写,简单语法错误。
->> * `None` 不设置检查。
-
-
-
-> * 如上图标注 1 和 2 所示,默认 IntelliJ IDEA 是没有开启自动 import 包的功能。
+- 如上图 Gif 所示,该功能用来快速设置代码检查等级。我个人一般在编辑大文件的时候会使用该功能。IntelliJ IDEA 对于编辑大文件并没有太大优势,很卡,原因就是它有各种检查,这样是非常耗内存和 CPU 的,所以为了能加快大文件的读写,我一般会暂时性设置为 `None`。
+- `Inspections` 为最高等级检查,可以检查单词拼写,语法错误,变量使用,方法之间调用等。
+- `Syntax` 可以检查单词拼写,简单语法错误。
+- `None` 不设置检查。
->> * 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包。
->> * 勾选标注 2 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入需要用到的包。但是对于那些同名的包,还是需要手动 `Alt + Enter` 进行导入的,IntelliJ IDEA 目前还无法智能到替我们做判断。
+----------------------------------------------------------------------------

-> * 如上图标注 1 所示,当我们 Java 类中导入的某个包下类超过这里设置的指定个数,就会换成用 `*` 号来代替。
+- 如上图标注 1 所示,当我们 Java 类中导入的某个包下类超过这里设置的指定个数,就会换成用 `*` 号来代替。
-
-
-> * 如上图 Gif 所示,IntelliJ IDEA 默认是会折叠空包的,这样就会出现包名连在一起的情况。但是有些人不喜欢这种结构,喜欢整个结构都是完整树状的,所以我们可以去掉演示中的勾选框即可。
+----------------------------------------------------------------------------

-> * 如上图标注 1 所示,IntelliJ IDEA 有一种叫做 `省电模式` 的状态,开启这种模式之后 IntelliJ IDEA 会关掉代码检查和代码提示等功能。所以一般我也会认为这是一种 `阅读模式`,如果你在开发过程中遇到突然代码文件不能进行检查和提示可以来看看这里是否有开启该功能。
-
-
-
-> * 如上图 Gif 所示,在我们按 `Ctrl + Shift + N` 进行打开某个文件的时候,我们可以直接定位到该文件的行数上。一般我们在调 CSS,根据控制台找空指针异常的时候,使用该方法速度都会相对高一点。
+- 如上图标注 1 所示,IntelliJ IDEA 有一种叫做 `省电模式` 的状态,开启这种模式之后 IntelliJ IDEA 会关掉代码检查和代码提示等功能。所以一般我也会认为这是一种 `阅读模式`,如果你在开发过程中遇到突然代码文件不能进行检查和提示可以来看看这里是否有开启该功能。
-
+----------------------------------------------------------------------------
-> * 如上图标注红圈所示,我们可以对指定代码类型进行默认折叠或是展开的设置,勾选上的表示该类型的代码在文件被打开的时候默认是被折叠的,去掉勾选则反之。
+
-
+- 如上图 Gif 所示,在我们按 `Ctrl + Shift + N` 进行打开某个文件的时候,我们可以直接定位到该文件的行数上。一般我们在调 CSS,根据控制台找空指针异常的时候,使用该方法速度都会相对高一点。
-> * 如上图 Gif 所示,IntelliJ IDEA 支持对代码进行垂直或是水平分组。一般在对大文件进行修改的时候,有些修改内容在文件上面,有些内容在文件下面,如果来回操作可能效率会很低,用此方法就可以好很多。当然了,前提是自己的显示器分辨率要足够高。
+----------------------------------------------------------------------------

-> * 如上图箭头所示,IntelliJ IDEA 默认是开启单词拼写检查的,有些人可能有强迫症不喜欢看到单词下面有波浪线,就可以去掉该勾选。但是我个人建议这个还是不要关闭,因为拼写检查是一个很好的功能,当大家的命名都是标准话的时候,这可以在不时方便地帮我们找到代码因为拼写错误引起的 Bug。
+- 如上图箭头所示,IntelliJ IDEA 默认是开启单词拼写检查的,有些人可能有强迫症不喜欢看到单词下面有波浪线,就可以去掉该勾选。但是我个人建议这个还是不要关闭,因为拼写检查是一个很好的功能,当大家的命名都是标准话的时候,这可以在不时方便地帮我们找到代码因为拼写错误引起的 Bug。
-
+----------------------------------------------------------------------------
-> * 如上图 Gif 所示,我们可以对组件窗口的子窗口进行拖动移位,有时候设置过头或是效果不满意,那我们需要点击此按钮进行窗口还原。
+
-
+- 如上图 Gif 所示,我们可以对组件窗口的子窗口进行拖动移位,有时候设置过头或是效果不满意,那我们需要点击此按钮进行窗口还原。
-> * 如上图 Gif 所示,在没有对 `Ctrl + D` 快捷键进行修改前,此快捷键将是用来复制并黏贴所选的内容的,但是黏贴的位置是补充在原来的位置后,我个人不喜欢这种风格,我喜欢复制所选的行数完整内容,所以进行了修改,修改后的效果如上图 Gif 演示。
+----------------------------------------------------------------------------

-> * 如上图 Gif 所示,默认 `Ctrl + 空格` 快捷键是基础代码提示、补充快捷键,但是由于我们中文系统基本这个快捷键都被输入法占用了,所以我们发现不管怎么按都是没有提示代码效果的,原因就是在此。我个人建议修改此快捷键为 `Ctrl + 逗号`。
-
-
-
-> * 如上图 Gif 所示,IntelliJ IDEA 14 版本默认是不显示内存使用情况的,对于大内存的机器来讲不显示也无所谓,但是如果是内存小的机器最好还是显示下。如上图演示,点击后可以进行部分内存的回收。
-
-
-
-> * 如上图标注 1 所示,在打开很多文件的时候,IntelliJ IDEA 默认是把所有打开的文件名 Tab 单行显示的。但是我个人现在的习惯是使用多行,多行效率比单行高,因为单行会隐藏超过界面部分 Tab,这样找文件不方便。
-
-
-
-> * 如上图 Gif 所示,默认 IntelliJ IDEA 对于 Java 代码的单行注释是把注释的斜杠放在行数的最开头,我个人觉得这样的单行注释非常丑,整个代码风格很难看,所以一般会设置为单行注释的两个斜杠跟随在代码的头部。
-
-
-
-> * 如上图 Gif 所示,默认 Java 代码的头个花括号是不换行的,但是有人喜欢对称结构的花括号,可以进行此设置。对于此功能我倒是不排斥,我个人也是颇喜欢这种对称结构的,但是由于这种结构会占行,使得文件行数变多,所以虽然我个人喜欢,但是也不这样设置。
-
-
-
-> * 如上图标注 1 所示,如果在 make 或 rebuild 过程中很慢,可以增加此堆内存设置,一般大内存的机器设置 `1500` 以上都是不要紧的。
-
-
-
-> * 如上图标注 1 所示,勾选此选项后,启动 IntelliJ IDEA 的时候,默认会打开上次使用的项目。如果你只有一个项目的话,该功能还是很好用的,但是如果你有多个项目的话,建议还是关闭,这样启动 IntelliJ IDEA 的时候可以选择最近打开的某个项目。
-> * 如上图红圈所示,该选项是设置当我们已经打开一个项目窗口的时候,再打开一个项目窗口的时候是选择怎样的打开方式。
-
->> * `Open project in new window` 每次都使用新窗口打开。
->> * `Open project in the same window` 每次都替换当前已打开的项目,这样桌面上就只有一个项目窗口。
->> * `Confirm window to open project in` 每次都弹出提示窗口,让我们选择用新窗口打开或是替换当前项目窗口。
-
-
-
-> * 如上图 Gif 所示,对于横向太长的代码我们可以进行软分行查看。软分行引起的分行效果是 IntelliJ IDEA 设置的,本质代码是没有真的分行的。
-
-
-
-> * 如上图箭头所示,该设置可以增加 `Ctrl + E` 弹出层显示的记录文件个数。
-
-
-
-> * 如上图箭头所示,该设置可以增加打开的文件 Tab 个数,当我们打开的文件超过该个数的时候,早打开的文件会被新打开的替换。
+- 如上图 Gif 所示,默认 `Ctrl + 空格` 快捷键是基础代码提示、补充快捷键,但是由于我们中文系统基本这个快捷键都被输入法占用了,所以我们发现不管怎么按都是没有提示代码效果的,原因就是在此。我个人建议修改此快捷键为 `Ctrl + 逗号`。
-
+----------------------------------------------------------------------------
-> * 如上图标注 1 所示,该区域的后缀类型文件在 IntelliJ IDEA 中将以标注 2 的方式进行打开。
-> * 如上图标注 3 所示,我们可以在 IntelliJ IDEA 中忽略某些后缀的文件或是文件夹,比如我一般会把 `.idea` 这个文件夹忽略。
diff --git a/settings-introduce-2.md b/settings-introduce-2.md
index c3e49f05..7260f9b3 100644
--- a/settings-introduce-2.md
+++ b/settings-introduce-2.md
@@ -1,4 +1,4 @@
-# IntelliJ IDEA 常用设置讲解
+# IntelliJ IDEA 常用设置讲解 - 2
## 说明
@@ -8,29 +8,52 @@ IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也

-> * 如上图 Gif 所示,当我们设置了组件窗口的 `Pinned Mode` 属性之后,在切换到其他组件窗口的时候,已设置该属性的窗口不会自动隐藏。
+- 如上图 Gif 所示,当我们设置了组件窗口的 `Pinned Mode` 属性之后,在切换到其他组件窗口的时候,已设置该属性的窗口不会自动隐藏。
+
+----------------------------------------------------------------------------

-> * 如上图 Gif 所示,我们可以对某些文件进行添加到收藏夹,然后在收藏夹组件窗口中可以查看到我们收藏的文件。
+- 如上图 Gif 所示,我们可以对某些文件进行添加到收藏夹,然后在收藏夹组件窗口中可以查看到我们收藏的文件。
-
+----------------------------------------------------------------------------
-> * 如上图 Gif 所示,我们可以通过 `Alt + F1` + `1` 快捷键来定位当前文件所在 Project 组件窗口中的位置。
+
-
+- 如上图 Gif 所示,我们可以通过 `Alt + F1` + `1` 快捷键来定位当前文件所在 Project 组件窗口中的位置。
-> * 如上图 Gif 所示,我们可以勾选此设置后,增加 `Ctrl + 鼠标滚轮` 快捷键来控制代码字体大小显示。
+----------------------------------------------------------------------------

-> * 如上图 Gif 所示,我们可以勾选此设置后,增加 `Ctrl + 鼠标滚轮` 快捷键来控制图片的大小显示。
+- 如上图 Gif 所示,我们可以勾选此设置后,增加 `Ctrl + 鼠标滚轮` 快捷键来控制图片的大小显示。
-
-
-> * 如上图红圈所示,默认 IntelliJ IDEA 是没有勾选 `Show line numbers` 显示行数的,但是我建议一般这个要勾选上。
-> * 如上图红圈所示,默认 IntelliJ IDEA 是没有勾选 `Show method separators` 显示方法线的,这种线有助于我们区分开方法,所以也是建议勾选上的。
+----------------------------------------------------------------------------

-> * 如上图 Gif 所示,我们选中要被折叠的代码按 `Ctrl + Alt + T` 快捷键,选择自定义折叠代码区域功能。
\ No newline at end of file
+- 如上图 Gif 所示,我们选中要被折叠的代码按 `Ctrl + Alt + T` 快捷键,选择自定义折叠代码区域功能。
+
+----------------------------------------------------------------------------
+
+
+
+
+- 如上图 Gif 所示,即使我们项目没有使用版本控制功能,IntelliJ IDEA 也给我们提供了本地文件历史记录。除了简单的记录之外,我们还可以给当前版本加标签。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图 Gif 所示,我们还可以根据选择的代码,查看该段代码的本地历史,这样就省去了查看文件中其他内容的历史了。除了对文件可以查看历史,文件夹也是可以查看各个文件变化的历史。
+
+----------------------------------------------------------------------------
+
+
+
+
+- 如上图 Gif 所示,IntelliJ IDEA 默认是会折叠空包的,这样就会出现包名连在一起的情况。但是有些人不喜欢这种结构,喜欢整个结构都是完整树状的,所以我们可以去掉演示中的勾选框即可。
+
+
+----------------------------------------------------------------------------
+
diff --git a/settings-introduce-3.md b/settings-introduce-3.md
index b8091d06..d7a296dd 100644
--- a/settings-introduce-3.md
+++ b/settings-introduce-3.md
@@ -1,4 +1,4 @@
-# IntelliJ IDEA 常用设置讲解
+# IntelliJ IDEA 常用设置讲解 - 3
## 说明
@@ -8,52 +8,45 @@ IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也

-> * 如上图 Gif 所示,当我们在编辑某个文件的时候,自动定位到当前文件所在的 Project 组件窗口位置。
+- 如上图 Gif 所示,当我们在编辑某个文件的时候,自动定位到当前文件所在的 Project 组件窗口位置。
-
-
-> * 如上图 Gif 所示,即使我们项目没有使用版本控制功能,IntelliJ IDEA 也给我们提供了本地文件历史记录。除了简单的记录之外,我们还可以给当前版本加标签。
-
-
-
-> * 如上图 Gif 所示,我们还可以根据选择的代码,查看该段代码的本地历史,这样就省去了查看文件中其他内容的历史了。除了对文件可以查看历史,文件夹也是可以查看各个文件变化的历史。
+----------------------------------------------------------------------------

-> * 如上图 Gif 所示,IntelliJ IDEA 自带了代码检查功能,可以帮我们分析一些简单的语法问题和一些代码细节。
+- 如上图 Gif 所示,IntelliJ IDEA 自带了代码检查功能,可以帮我们分析一些简单的语法问题和一些代码细节。
+
+----------------------------------------------------------------------------

-> * 如上图 Gif 所示,IntelliJ IDEA 自带模拟请求工具 Rest Client,在开发时用来模拟请求是非常好用的。
+- 如上图 Gif 所示,IntelliJ IDEA 自带模拟请求工具 Rest Client,在开发时用来模拟请求是非常好用的。
+
+----------------------------------------------------------------------------

-> * 如上图 Gif 所示,IntelliJ IDEA 的自定义 TODO 功能非常好用,强烈建议平时开发要经常使用上。
+- 如上图 Gif 所示,IntelliJ IDEA 的自定义 TODO 功能非常好用,强烈建议平时开发要经常使用上。
-
+----------------------------------------------------------------------------
-> * 如上图箭头所示,在 Debug 状态下,如果我们要批量删除断点,可以点击图上箭头所示的按钮,然后选中要删除的断点按断点上面的减号进行删除。
+
-
+- 如上图箭头所示,在 Debug 状态下,如果我们要批量删除断点,可以点击图上箭头所示的按钮,然后选中要删除的断点按断点上面的减号进行删除。
-> * 默认 IntelliJ IDEA 是有一套自己的 IDE 整体设置的,比如 IDE 设置中我们常修改的:默认编码、编译版本、Maven 本地库路径等等,这些其实是可以避免的。
-> * 按正常设置 Project 流程的话,我们在 Project 状态下进行 IDE 设置,这些设置并不会被当做一个标准的 IDE 设置模板保存起来,所以你下次打开一个新的 Project 还是要重新设置的,为了简便操作,你可以按上图 Gif 所示进行设置 `Default Settings,这样下次打开新的 Project 就会以这个 IDE 设置进行。
-> * 需要注意的是:设置好配置之后,你需要重启 IntelliJ IDEA,重启之后的 IntelliJ IDEA 重新打开 Project 才能有效果。
+----------------------------------------------------------------------------

-> * 如上图所示,不管是用 IntelliJ IDEA 打开新文件,或是在安装本地插件,在弹出的窗口中,图 1 按钮支持快速定位到系统桌面目录,图 2 按钮支持快速定位到当前项目目录。
-
-
-
-> * 2016.2 版本新增箭头指向的按钮,在提交列表里可以显示项目中未加入到版本控制的文件,方便我们在提交的时候做好代码检查,以防漏掉某些文件未提交。
-
-
-
+- 如上图所示,不管是用 IntelliJ IDEA 打开新文件,或是在安装本地插件,在弹出的窗口中,图 1 按钮支持快速定位到系统桌面目录,图 2 按钮支持快速定位到当前项目目录。
+----------------------------------------------------------------------------
+
+- 2016.2 版本新增箭头指向的按钮,在提交列表里可以显示项目中未加入到版本控制的文件,方便我们在提交的时候做好代码检查,以防漏掉某些文件未提交。
+----------------------------------------------------------------------------
diff --git a/settings-introduce-4.md b/settings-introduce-4.md
index efddfa1d..8847d378 100644
--- a/settings-introduce-4.md
+++ b/settings-introduce-4.md
@@ -1,4 +1,4 @@
-# IntelliJ IDEA 常用设置讲解
+# IntelliJ IDEA 常用设置讲解 - 4
## 说明
@@ -6,20 +6,50 @@ IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也
## 常用设置
+
+
+- 如上图 Gif 所示,默认 Java 代码的头个花括号是不换行的,但是有人喜欢对称结构的花括号,可以进行此设置。对于此功能我倒是不排斥,我个人也是颇喜欢这种对称结构的,但是由于这种结构会占行,使得文件行数变多,所以虽然我个人喜欢,但是也不这样设置。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图箭头所示,该设置可以增加 `Ctrl + E` 弹出层显示的记录文件个数。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图标注 1 所示,该区域的后缀类型文件在 IntelliJ IDEA 中将以标注 2 的方式进行打开。
+- 如上图标注 3 所示,我们可以在 IntelliJ IDEA 中忽略某些后缀的文件或是文件夹,比如我一般会把 `.idea` 这个文件夹忽略。
+
+----------------------------------------------------------------------------
+

-> * 如上图 Gif 所示,这是一个 Maven 多模块项目,在开发多模块的时候,经常会改到其他模块的代码,而模块与模块之间是相互依赖,如果不进行 install 就没办法使用到最新的依赖。
-> * 所以,为了减少自己手动 install 的过程,可以把 install 过程放在项目启动之前,就像 Gif 所示那样。
+- 如上图 Gif 所示,这是一个 Maven 多模块项目,在开发多模块的时候,经常会改到其他模块的代码,而模块与模块之间是相互依赖,如果不进行 install 就没办法使用到最新的依赖。
+- 所以,为了减少自己手动 install 的过程,可以把 install 过程放在项目启动之前,就像 Gif 所示那样。
+----------------------------------------------------------------------------
+
+- 如上图 gif 演示的:Load/Unload Modules 是 2017.2 引入的新特性,对于多模块的项目开发 Unload 部分少用到的模块可以减少计算机 CPU 和内存的消耗。
+----------------------------------------------------------------------------
+
+- 如上图所示 'Show in Run Dashboard',在 2017.2.3 以后可以统一在一个 Tab 中管理全部模块应用。
+- 这对于开发分布式系统(Spring Boot / Spring Cloud)来讲非常方便。
+----------------------------------------------------------------------------
+- 设置鼠标停留展示方法等文档信息(thanks kannad)
+- 勾选:Preferences | Editor | General | Show quick documentation on mouse move
+----------------------------------------------------------------------------
diff --git a/settings-recommend-introduce.md b/settings-recommend-introduce.md
new file mode 100644
index 00000000..b127fae4
--- /dev/null
+++ b/settings-recommend-introduce.md
@@ -0,0 +1,148 @@
+# IntelliJ IDEA 推荐设置讲解
+
+## 说明
+
+IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它。
+
+## 推荐设置
+
+
+
+- IntelliJ IDEA 的代码提示和补充功能有一个特性:区分大小写。如上图标注 1 所示,默认就是 `First letter` 区分大小写的。
+- 区分大小写的情况是这样的:比如我们在 Java 代码文件中输入 `stringBuffer` IntelliJ IDEA 是不会帮我们提示或是代码补充的,但是如果我们输入 `StringBuffer` 就可以进行代码提示和补充。
+- 如果想不区分大小写的话,改为 `None` 选项即可。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图标注 1 和 2 所示,默认 IntelliJ IDEA 是没有开启自动 import 包的功能。
+ - 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包。
+ - 勾选标注 2 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入需要用到的包。但是对于那些同名的包,还是需要手动 `Alt + Enter` 进行导入的,IntelliJ IDEA 目前还无法智能到替我们做判断。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图标注红圈所示,我们可以对指定代码类型进行默认折叠或是展开的设置,勾选上的表示该类型的代码在文件被打开的时候默认是被折叠的,去掉勾选则反之。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图 Gif 所示,IntelliJ IDEA 支持对代码进行垂直或是水平分组。一般在对大文件进行修改的时候,有些修改内容在文件上面,有些内容在文件下面,如果来回操作可能效率会很低,用此方法就可以好很多。当然了,前提是自己的显示器分辨率要足够高。
+- 如果经常使用分屏,也可以考虑设置快捷键,快捷设置可以查看 [此文章](https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/keymap-introduce.md)
+ - 垂直分屏快捷键关键字:`Split Vertically`
+ - 水平分屏快捷键关键字:`Split Horizontally`
+
+----------------------------------------------------------------------------
+
+
+
+
+- 如上图 Gif 所示,在没有对 `Ctrl + D` 快捷键进行修改前,此快捷键将是用来复制并黏贴所选的内容的,但是黏贴的位置是补充在原来的位置后,我个人不喜欢这种风格,我喜欢复制所选的行数完整内容,所以进行了修改,修改后的效果如上图 Gif 演示。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图 Gif 所示,默认 `Ctrl + 空格` 快捷键是基础代码提示、补充快捷键,但是由于我们中文系统基本这个快捷键都被输入法占用了,所以我们发现不管怎么按都是没有提示代码效果的,原因就是在此。我个人建议修改此快捷键为 `Ctrl + 逗号`。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图 Gif 所示,IntelliJ IDEA 14 以后版本默认是不显示内存使用情况的,对于大内存的机器来讲不显示也无所谓,但是如果是内存小的机器最好还是显示下。如上图演示,点击后可以进行部分内存的回收。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图 Gif 所示,我们可以勾选此设置后,增加 `Ctrl + 鼠标滚轮` 快捷键来控制代码字体大小显示。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图红圈所示,默认 IntelliJ IDEA 是没有勾选 `Show line numbers` 显示行数的,但是我建议一般这个要勾选上。
+- 如上图红圈所示,默认 IntelliJ IDEA 是没有勾选 `Show method separators` 显示方法线的,这种线有助于我们区分开方法,所以也是建议勾选上的。
+
+----------------------------------------------------------------------------
+
+
+
+- 默认 IntelliJ IDEA 是有一套自己的 IDE 整体设置的,比如 IDE 设置中我们常修改的:默认编码、编译版本、Maven 本地库路径等等,这些其实是可以避免的。
+- 按正常设置 Project 流程的话,我们在 Project 状态下进行 IDE 设置,这些设置并不会被当做一个标准的 IDE 设置模板保存起来,所以你下次打开一个新的 Project 还是要重新设置的,为了简便操作,你可以按上图 Gif 所示进行设置 `Default Settings,这样下次打开新的 Project 就会以这个 IDE 设置进行。
+- 需要注意的是:设置好配置之后,你需要重启 IntelliJ IDEA,重启之后的 IntelliJ IDEA 重新打开 Project 才能有效果。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图标注 1 所示,在打开很多文件的时候,IntelliJ IDEA 默认是把所有打开的文件名 Tab 单行显示的。但是我个人现在的习惯是使用多行,多行效率比单行高,因为单行会隐藏超过界面部分 Tab,这样找文件不方便。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图 Gif 所示,默认 IntelliJ IDEA 对于 Java 代码的单行注释是把注释的斜杠放在行数的最开头,我个人觉得这样的单行注释非常丑,整个代码风格很难看,所以一般会设置为单行注释的两个斜杠跟随在代码的头部。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图 Gif 所示,对于横向太长的代码我们可以进行软分行查看。软分行引起的分行效果是 IntelliJ IDEA 设置的,本质代码是没有真的分行的。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图标注 1 所示,勾选此选项后,启动 IntelliJ IDEA 的时候,默认会打开上次使用的项目。如果你只有一个项目的话,该功能还是很好用的,但是如果你有多个项目的话,建议还是关闭,这样启动 IntelliJ IDEA 的时候可以选择最近打开的某个项目。
+- 如上图红圈所示,该选项是设置当我们已经打开一个项目窗口的时候,再打开一个项目窗口的时候是选择怎样的打开方式。
+ - `Open project in new window` 每次都使用新窗口打开。
+ - `Open project in the same window` 每次都替换当前已打开的项目,这样桌面上就只有一个项目窗口。
+ - `Confirm window to open project in` 每次都弹出提示窗口,让我们选择用新窗口打开或是替换当前项目窗口。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图箭头所示,该设置可以增加打开的文件 Tab 个数,当我们打开的文件超过该个数的时候,早打开的文件会被新打开的替换。
+
+----------------------------------------------------------------------------
+
+
+
+
+- 默认 IntelliJ IDEA 是没有开启自动帮你生成 serialVersionUID 的,需要我们自行设置。
+- 如上图第一张,需要先勾选:`Serializable class without serialVersionUID`
+- 如上图第二张,在已经继承了 Serializable 接口的类名上,把光标放在类名上(必须这样做),按 `Alt + Enter`,即可提示帮你生成 serialVersionUID 功能。
+
+----------------------------------------------------------------------------
+
+
+
+- 如上图所示设置默认浏览器。因为我个人有专属的测试浏览器,所以希望默认从控制台输出的链接是用测试浏览器打开,就可以这样设置。
+
+----------------------------------------------------------------------------
+
+
+
+----------------------------------------------------------------------------
+
+
+
+----------------------------------------------------------------------------
+
+
+
+----------------------------------------------------------------------------
+
+
+
+----------------------------------------------------------------------------
+
+
+
+----------------------------------------------------------------------------
+
diff --git a/theme-settings.md b/theme-settings.md
index d8362b61..3d41f9ca 100644
--- a/theme-settings.md
+++ b/theme-settings.md
@@ -4,7 +4,7 @@

-> * 上图标注 1 所示为 IntelliJ IDEA 修改主题的地方,在 Windows 系统上 IntelliJ IDEA 默认提供的主题有四套:`Darcula`、`IntelliJ`、`Windows`、`Alloy. IDEA Theme`。除了 `Darcula` 是黑色主题,其他三套都是以白色为背景的。
+> * 上图标注 1 所示为 IntelliJ IDEA 修改主题的地方,可以通过打开左上角的File -> Setting。在 Windows 系统上 IntelliJ IDEA 默认提供的主题有四套:`Darcula`、`IntelliJ`、`Windows`、`Alloy. IDEA Theme`。除了 `Darcula` 是黑色主题,其他三套都是以白色为背景的。
> * 其他操作系统上不一定会也有四套主题的,主题的选择上大家根据自己喜好即可。改变主题需要重启 IntelliJ IDEA 方可看到效果。
## 字体修改
@@ -46,7 +46,7 @@
> * 如上图红圈下拉所示,展示的是我当前电脑可以选择的编辑区主题。
> * 对于编辑区的主题,也有人制作成模板在网络上提供下载。这里主要介绍两个站点:
>
->> * ,主要提供 jar 文件下载。
+>> * ,主要提供 jar 文件下载。
>> * ,主要提供 xml 和 icl 文件下载。
>> * 对应文件如何安装请查看网站对应的 `Help` 页面,都有详细说明的。
@@ -86,7 +86,7 @@
> * 编译报错:`找不到符号`、`未结束的字符串文字` 等的解决办法:
>
->> * 由于 UTF-8 编码文件有分 `有BOM` 和 `无BOM` 之分,默认情况下 IntelliJ IDEA 使用的编译器是 `javac`,而此编译只能编译 `无BOM` 的文件,有很多 Eclipse 用户在使用 IntelliJ IDEA 开发 Eclipse 项目的时候常常会遇到此问题。主要是因为 Eclipse 的编译器是 `Eclipse`,此编译器支持 `有BOM` 的文件编译。顾,解决办法是对于此文件进行 BOM 去除。
+>> * 由于 UTF-8 编码文件有分 `有BOM` 和 `无BOM` 之分,默认情况下 IntelliJ IDEA 使用的编译器是 `javac`,而此编译只能编译 `无BOM` 的文件,有很多 Eclipse 用户在使用 IntelliJ IDEA 开发 Eclipse 项目的时候常常会遇到此问题。主要是因为 Eclipse 的编译器是 `Eclipse`,此编译器支持 `有BOM` 的文件编译。故,解决办法是对于此文件进行 BOM 去除。
>> * 批量去除 BOM,你可以 Google:`批量去除 BOM`、`批量转换无 BOM` 等关键字,网络上已有提供各种方案。
>> * 除了通过去除 BOM 还有设置 IntelliJ IDEA 的编译器为 `Eclipse`,但是一般不建议这样做。
>> * 如果上述问题都无法解决,而且你也确认 IntelliJ IDEA 各个配置编码的地方都是 `UTF-8`,报错文件编码也是是 `UTF-8 无 BOM` 的话,那还有一种可能也会出现这种情况:项目配置文件有问题。项目编码的配置文件在:`/项目目录/.idea/encodings.xml`。如果你会修改此文件可以进行修改,如果不会,那就删除掉 `.idea` 整个目录,重启 IntelliJ IDEA 重新配置这个项目即可。
diff --git a/ubuntu-install.md b/ubuntu-install.md
index cc49d22d..904b58ac 100644
--- a/ubuntu-install.md
+++ b/ubuntu-install.md
@@ -7,7 +7,7 @@
> * 内存:最低要求 1 GB,推荐 2 GB 以上
> * 硬盘:最低要求 2 GB
> * 显示器:最低要求 1024 X 768 分辨率
-> * 更多信息可以阅读:
+> * 更多信息可以阅读:
## 重要说明
diff --git a/vcs-introduce.md b/vcs-introduce.md
index 84c8b9f1..ea0199c5 100644
--- a/vcs-introduce.md
+++ b/vcs-introduce.md
@@ -81,7 +81,7 @@ Git 主要的版本有 1.X、2.X,最新的是 2.X,使用版本随意,但
>> * 第二个按钮:`Commit changes` 提交项目上所有变化文件。点击这个按钮不会立马提交所有文件,而是先弹出一个被修改文件的一个汇总框,具体操作下面会有图片进行专门介绍。
>> * 第三个按钮:`Compare with the Same Repository Version` 当前文件与服务器上该文件通版本的内容进行比较。如果当前编辑的文件没有修改,则是灰色不可点击。
>> * 第四个按钮:`Show history` 显示当前文件的历史记录。
->> * 第五个按钮:`Revert` 还原当前被修改的文件到违背修改的版本状态下。如果当前编辑的文件没有修改,则是灰色不可点击。
+>> * 第五个按钮:`Revert` 还原当前被修改的文件到未被修改的版本状态下。如果当前编辑的文件没有修改,则是灰色不可点击。

@@ -92,7 +92,7 @@ Git 主要的版本有 1.X、2.X,最新的是 2.X,使用版本随意,但

> * 如上图标注 1 所示,当前项目使用的版本控制是 `Git`。如果你不愿意这个项目继续使用版本控制可以点击旁边的减号按钮,如果你要切换版本控制,可以点击 `Git`,会出现 IntelliJ IDEA 支持的各种版本控制选择列表,但是我们一般情况下一个项目不会有多个版本控制的。
-> * 如上图标注 2 所示,`Show directories with changed descendants` 表示子目录有文件被修改了,则该文件的所有上层目录都显示版本控制被概念的颜色。默认是不勾选的,我一般建议勾选此功能。
+> * 如上图标注 2 所示,`Show directories with changed descendants` 表示子目录有文件被修改了,则该文件的所有上层目录都显示版本控制被修改的颜色。默认是不勾选的,我一般建议勾选此功能。

@@ -109,17 +109,17 @@ Git 主要的版本有 1.X、2.X,最新的是 2.X,使用版本随意,但
> * 如上图标注 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` 的功能就是为了让你更好地管理你的版本控制文件,让你的专注点得到更好的集中,从而提供效率。
+>> * `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` 后不放,需要注意的是这个更前面的复选框是没有多大关系的。
+> * 如上图标注 2 所示,可以根据工具栏按钮进行操作,操作的对象为鼠标选中的文件,多选可以按 `Ctrl` 后不放,需要注意的是这个跟前面的复选框是没有多大关系的。
> * 如上图标注 3 所示,可以在提交前自动对被提交的文件进行一些操作事件(该项目使用的 Git,使用其他版本控制可能有些按钮有差异。):
>
>> * `Reformat code` 格式化代码,如果是 Web 开发建议不要勾选,因为格式化 JSP 类文件,格式化效果不好。如果都是 Java 类则可以安心格式化。
>> * `Rearrange code` 重新编排代码,IntelliJ IDEA 支持各种复杂的编排设置选项,这个会在后面说。设置好了编码功能之后,这里就可以尝试勾选这个进行自动编排。
->> * `Optimize imports` 优化导入包,会在自动去掉没有使用的包。这个建议都勾选,这个只对 Java 类有作用,所以不用担心有副作用。
+>> * `Optimize imports` 优化导入包,会自动去掉没有使用的包。这个建议都勾选,因其只对 Java 类有作用,所以不用担心有副作用。
>> * `Perform code analysis` 进行代码分析,这个建议不用在提交的时候处理,而是在开发完之后,要专门养成对代码进行分析的习惯。IntelliJ IDEA 集成了代码分析功能。
>> * `Check TODO` 检查代码中的 `TODO`。`TODO` 功能后面也会有章节进行讲解,这里简单介绍:这是一个记录待办事项的功能。
->> * `Cleanup` 清除下版本控制系统,去掉一些版本控制系统的错误信息,建议勾选。
+>> * `Cleanup` 清除下版本控制系统,去掉一些版本控制系统的错误信息,建议勾选(主要针对 SVN,Git 不适用)。
> * 如上图标注 4 所示,填写提交的信息。
> * 如上图标注 5 所示,`Change list` 改变列表,这是一个下拉选项,说明我们可以切换不同的 `Change list`,提交不同的 `Change list` 文件。
> * 如上图标注箭头所示,我们可以查看我们提交历史中使用的 `Commit Message`,有些时候,我们做得是同一个任务,但是需要提交多次,为了更好管理项目,建议是提交的 `Message` 是保持一致的。
@@ -147,22 +147,63 @@ SVN 的这个窗口有的 IntelliJ IDEA 上叫 `Changes`,有的叫 `Version Co
- 更新的时候报:`Can't update: no tracked branch`
- 解决办法:打开 git-bash(路径:C:\Program Files\Git\git-bash.exe),切换到这个更新不下来的项目的根目录,然后输入:`git branch --set-upstream-to origin/master master`,回车之后重新回到 IntelliJ IDEA 进行更新,正常就可以了。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+- 输错密码后,弹出验证的登录框没有再出现:
+ - 解决办法如下图:选择 `Do not save, forget passwords after restart` 等你确定你的密码没错后再选择保存密码方案。
+
+
+
+
+## Git Flow 的介绍
+
+### Git Flow 概念
+
+- Git Flow 是一个 git 扩展集,按 Vincent Driessen 的分支模型提供高层次的库操作。这里的重点是 Vincent Driessen 的分支模型思想,下面讲解的内容也是基于 Vincent Driessen 思想。
+ - Vincent Driessen 的观点:
+ - `Git Flow 是一个 git 扩展集` 你可以理解 Git Flow 是一个基于 Git 的插件,这个插件简化了 Git 一些复杂的命令,比如 Git Flow 用一条命令,就可以代替 Git 原生 10 条命令。
+ - Git Flow 对原生的 Git 不会有任何影响,你可以照旧用 Git 原生命令,也可以使用 Git Flow 命令。
+- 还有其他的一些分支管理模型思想,具体可以看:
+
+### Git Flow 核心概念
+
+- 必须有的两个核心分支(长期分支):
+ - master,Git 代码仓库中默认的一条主分支。这条分支上的代码一般都建议为是正式版本的代码,并且这条分支不能进行代码修改,只能用来合并其他分支。
+ - develop,一般用于存储开发过程的代码分支,并且这条分支也不能进行代码修改,只能用来合并其他辅助分支。
+- 根据情况创建的辅助分支(临时分支)
+ - feature branches(功能分支)
+ - **基于 develop 分支上创建**
+ - **开发完成后合并到 develop 分支上**
+ - 当要开始一个新功能的开发时,我门可以创建一个 Feature branches 。等待这个新功能开发完成并确定应用到新版本中就合并回 develop
+ - 对于单人开发的 feature branches,start 之后,开发完成后可以直接 finish。
+ - 对于多人开发的 feature branches,start 之后,开发完成后先 publish 给其他开发人员进行合并,最后大家都开发完成后再 finish。这个思路也同样适用下面几个辅助分支场景。
+ - feature branches 开发过程有 bug,直接在 feature branches 上修改、提交。
+ - release branches(预发布分支)
+ - **基于 develop 分支上创建**
+ - **测试确定新功能没有问题,合并到 develop 分支和 master 分支上**
+ - 用来做新版本发布前的准备工作,在上面可以做一些小的 bug 修复、准备发布版本号等等和发布有关的小改动,其实已经是一个比较成熟的版本了。另外这样我们既可以在预发布分支上做一些发布前准备,也不会影响 "develop" 分支上下一版本的新功能开发。
+ - hotfix branches(基于 master 基础上的生产环境 bug 的修复分支)
+ - **基于 master 分支上创建**
+ - **修复测试无误后合并到 master 分支和 develop 分支上**
+ - 主要用于处理线上版本出现的一些需要立刻修复的 bug 情况
+
+### Git Flow 安装
+
+- Windows:如果你安装 Git 用的是 [Git for Windows](https://git-for-windows.github.io/),那它已经内置了。
+- Mac:`brew install git-flow-avh`
+- Linux:`wget --no-check-certificate -q https://raw.githubusercontent.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh && sudo bash gitflow-installer.sh install stable; rm gitflow-installer.sh`
+- 更多版本:
+- 在系统环境上支持之后,再安装 IntelliJ IDEA 对 Git Flow 支持的插件:
+
+### Git Flow 基础命令资料
+
+-
+-
+-
+
+### Git Flow Integration 插件的使用
+
+- 如果你已经理解了上面的理论,再看下面这些截图你能理解对应的是什么意思。
+
+
diff --git a/vm-settings.md b/vm-settings.md
new file mode 100644
index 00000000..5aa97c81
--- /dev/null
+++ b/vm-settings.md
@@ -0,0 +1,35 @@
+
+## 编译阶段
+
+- 路径: `Settings | Build, Execution, Deployment | Compiler > Build Process`
+- 以下两个类型选一个:
+- Shared build process: 该配置存储到 .idea 的 compiler.xml 文件中,该文件可以提交到 git 方便团队成员公用项目配置(团队成员电脑都不错的情况下可以公用)
+ - Shared heap size >> 2000 Mbytes
+ - Shared VM options >> -Xmx3g
+- User-local build process: 该配置存储到 .idea 的 workspace.xml 文件中,一般不提交到 git,属于个人配置
+ - User-local heap size >> 2000 Mbytes
+ - User-local VM options >> -Xmx3g
+
+
+## Maven 配置
+
+- 路径: `Settings | Build, Execution, Deployment | Build Tools | Maven`
+ - Thread count 填写你 CPU 中 performance core 的数量
+ - macOS 查看核心命令:
+```
+system_profiler SPHardwareDataType | grep -i "core"
+结果如下,我是 8 个性能核心,所以这里建议填写 8
+Total Number of Cores: 12 (8 performance and 4 efficiency)
+```
+
+- 路径: `Settings | Build, Execution, Deployment | Build Tools | Maven | Importing`
+ - `VM options for importer:` 填写 `-Xmx1500m`
+- 路径: `Settings | Build, Execution, Deployment | Build Tools | Maven | Runner`
+ - `VM options: ` 填写 `-Xmx1500m`
+
+
+## Spring Boot 项目运行
+
+- 点击右上角运行类的下拉框: `Edit Configurations`
+- 在 Run/Debug Configurations 弹出框, 点击 `modify options` 在出现的选项列表中选择: `Add VM Options`
+- 这时候 Run/Debug Configurations 界面就多了一个 VM Options 输入框: `Xmx2000m`
diff --git a/windows-install.md b/windows-install.md
index 5c738a17..ff62f610 100644
--- a/windows-install.md
+++ b/windows-install.md
@@ -11,7 +11,7 @@
> * 内存:最低要求 1 GB,推荐 2 GB 以上
> * 硬盘:最低要求 2 GB
> * 显示器:最低要求 1024 X 768 分辨率
-> * 更多信息可以阅读:
+> * 更多信息可以阅读:
## 首次安装