初次使用IntelliJ IDEA

  一直听说IntelliJ IDEA很好用,是最棒的Java IDE了,所以我也来学着用用了。网上教程还是很多的,不过还是要把那些我认为重要的记下来才行,那些新东西并不是只看一遍就能永远记住的。以前用习惯了Eclipse、MyEclipse这2个IDE,我也知道要用新东西,那肯定不能套用旧思维。初步感受是IntelliJ IDEA与Eclipse两者的理念以及操作相差还是挺大的,所以我一时半刻也适应不过来,挺多东西要记住的,当然这不是靠死记硬背就有用的,用得多才是王道。想想当年第一次使用Eclipse写Java代码也是一脸懵逼的,用着用着用多了现在还不是能流畅地运用这个工具。

使用前须知

  • 觉得IntelliJ IDEA速度奇慢,最佳的解决办法是给自己的电脑来一块固态硬盘
    硬盘才是解决该问题最关键的一点,而不是CPU与内存(当然它们同样关键,只不过在这里没硬盘那么关键而已)。

  • IntelliJ IDEA没有工作空间(work space)的概念,在一个IDE窗口只能打开一个项目。
    IntelliJ IDEA中最大的处理单元就是项目(project),而项目中又包含了模块(module),模块可以有1个或多个。

    • 如果要用IntelliJ IDEA打开多个项目,那只能是为每一个项目都打开一个IDE窗口,或者是将那些项目转变为模块放到同一个IntelliJ IDEA项目中。
    • IntelliJ IDEA默认情况下创建的新项目就是单模块的,所以说项目目录和模块目录其实是同一个目录。
  • 快捷键非常不适应问题,这个问题除了自己没有任何局外人可以帮到自己。
    常用的快捷键记下来多用一点就行了,并不用记住所有,回想一下自己第一次用其他IDE的境况是如何的。
    一些能够让我们快速拥有生产力的快捷键才是最值得我们记住的快捷键

  • IntelliJ IDEA的缓存和索引

    • 前面说到的为何硬盘性能是最关键的其实是因为这个IDE会给项目建立缓存和索引,
      在使用IDEA做项目的时候,IDEA经常调用缓存和索引,所以硬盘的IO性能必须很叼那整个软件的运行速度才会有质的提升。

    • 缓存和索引主要用来加快文件查询,从而加快各种查找,代码提示等操作速度。

    • 使用IDEA工作途中有突发情况:蓝屏死机、强制关机等,这都能破坏缓存和索引,这导致重新打开项目时会出错。

  • IntelliJ IDEA存储配置、缓存、日志等内容的目录
    以Windows 7为例,IDEA的设置目录是这个系统盘\用户目录\.IntelliJIdea<Version>路径。

    • 其中里面名为config的目录是存储IntelliJ IDEA个性化配置的目录,我们对IDE的全局设置都存储在这里。

    • 其中里面名为system的目录是存储IntelliJ IDEA项目的缓存和索引以及日志等等信息。

安装完后的重要设置

安装目录中配置文件的设置

在启动IDE前我们最好是对IntelliJ IDEA安装目录\bin内的几个文件进行配置。

  • idea.exe.vmoptionsidea64.exe.vmoptions这两个文件是运行IDE的Java虚拟机的配置文件。
    当你内存资源宽裕的时候,那就可以通过修改这些文件来来增加虚拟机的堆内存从而加快IntelliJ IDEA的运行速度。

    一般情况下,我们只配置idea64.exe.vmoptions就可以了,毕竟现在是大内存时代,每个人几乎都用64位系统了,我的配置如下:

    -Xms1024m
    -Xmx2048m
    -XX:ReservedCodeCacheSize=1024m
    -XX:+UseConcMarkSweepGC
    -XX:SoftRefLRUPolicyMSPerMB=50
    

    其实内存大怎么改都无所谓了,最大值那块改成4096m都是没问题的。

  • idea.properties这个文件用于配置IntelliJ IDEA本身最基础设定。

    在这配置文件中,我们最常配置的也就以下那么几个属性:

    • idea.config.path

      1
      2
      # Uncomment this option if you want to customize path to IDE config folder. Make sure you're using forward slashes.
      # idea.config.path=${user.home}/.IntelliJIdea/config

      这个属性用于指定IDEA配置目录的位置,指定哪个目录(默认配置目录名为config),那IDEA就会加载该目录内的配置文件。

    • idea.system.path

      1
      2
      # Uncomment this option if you want to customize path to IDE system folder. Make sure you're using forward slashes.
      # idea.system.path=${user.home}/.IntelliJIdea/system

      这个属性用于指定IDEA创建及利用的索引和缓存存储目录的位置(默认存储缓存和索引的目录名为system)。

    • idea.max.intellisense.filesize

      1
      2
      3
      4
      5
      # Maximum file size (kilobytes) IDE should provide code assistance for.
      # The larger file is the slower its editor works and higher overall system memory requirements are
      # if code assistance is enabled. Remove this property or set to very large number if you need
      # code assistance for any files available regardless their size.
      idea.max.intellisense.filesize=2500

      这个属性描述IDEA至多会为多大的文件提供代码帮助(智能提示、各种说明什么的),
      当你想要IDEA给任意大小的文件都能提供代码帮助的功能,那么就把这条属性给注释掉或者调高最大值。

    • idea.cycle.buffer.size

      1
      2
      3
      # This option controls console cyclic buffer: keeps the console output size not higher than the specified buffer size (Kb).
      # Older lines are deleted. In order to disable cycle buffer use idea.cycle.buffer.size=disabled
      idea.cycle.buffer.size=1024

      这个属性用于设置控制台输出的缓冲区大小,一旦输出内容过多并超过所配置的缓冲区,所输出的老内容会被删除。
      所以有些项目输出很多,但你又想控制台一次显示全部,那就把这个值改大,或者配置idea.cycle.buffer.size=disabled

  以上这4个属性的配置是我们最常用到的,我都是采用默认值,当然,IDEA的缓存和索引的体积可以说是非常大的,但它默认是放在系统盘,所以你可以斟酌情况来配置system目录的的位置,当然,IDEA的配置目录config默认也在系统盘,你觉得管理配置不方便的话,可以自定义该配置目录的路径。
  同时我们要注意的是:配置路径时用的必须是正斜杠/

编码设置

这其实就跟使用Eclipse、MyEclipse一样,首先把编码这块给设置好,以后做项目会少很多麻烦。编码建议都设置为UTF-8

  • 全局编码设置
    Menu Bar → File → Settings → Editor → File Encodings
    按照这个步骤我们就可以来到一个设置编码的窗口:
    其中IDE Encoding指的是整个IDE所用的编码,Project Encoding指的是所有项目的编码。
    同时把Default encoding for properties files设置为UTF-8,并勾选Transparent native-to-ascii conversion
    这样,编码这块就完全OK了。
  • 单个文件编码设置
    这有3种方式。

    • 也是在这Menu Bar → File → Settings → Editor → File Encodings
      选中项目模块中的某些文件进行编码设置。

    • 打开某个文件然后在编辑器上随便点一下鼠标右键 → File Encoding → 选择编码

    • Status Bar → 点击显示编码的地方 → 选择编码

    如果文件中含有英文字母以及数字外其他语言的字符,比如有中文,那么在选择编码后,就会弹出一个带3个选项的对话框:
    Reload - 通过你当前新选择的编码重新加载该文件,但以这种方式编码后的文件内容不会保存到本地原文件。
    Convert - 使用你当前新选择的编码将该文件的编码转换,并将重新编码后的内容存储到本地原文件。

视觉上的设置

  • IDE主题个性化设置
    File → Settings → Appearance & Behavior → Appearance,在此处我们可以作以下配置。

    • 一般选择Darcula黑色主题(更加保护眼睛,色调也更帅)。
    • 勾选Override default fonts by(not recommended),这就可以修改IDE字体,字体我用的默认微软雅黑,字体大小也是默认12。
      选择字体的时候最好选择一些中英文都能够显示的字体,如果选择的字体只能显示英文,那么IDE显示中文时就会是乱码。
    • 勾选Window Options下的Show memory indicator,用于显示内存使用情况。
  • 代码编辑器设置

    • File → Settings → Editor → General → Code Completion
      在此处,建议把Case sensitive completion改成None,这样无论我们输入的单词是大写还是小写,IDE都会进行补充提示。

    • File → Settings → Editor → General → Appearance
      建议去掉Show parameter name hints的勾选关闭调用方法时的参数名暗示。

    • File → Settings → Editor → Colors & Fonts → Font
      在这里可以首先新建一个Scheme保存我们的字体配置方案。
      第一主要字体肯定是选我大Consolas啦,字体大小17,当然字体大小是根据分辨率而定的。
      勾选Secondary font,并选择字体,这个字体最好是选择中文字体。

    • File → Settings → Editor → Colors & Fonts → General
      这里是对编辑器内与语言无关的全局配色方案设置,一般设置以下几项:

      • 设置光标所在行:Editor → Caret row,这里我配置为全黑色。
      • 设置默认文字:Text → Default text,这里我设置前景色为:#A9B7C6、背景色为#042029
      • 修改Java代码的配色方案: File → Settings → Editor → Colors & Fonts → Java

全局默认的IDE设置

  一般在创建并打开新项目的环境下对IDE进行设置,某些IDE设置并不会被当作全局默认的IDE设置而被保存起来,IntelliJ IDEA只会把这些设置当作针对当前项目所做的设置。比如:文件编码、版本控制、编译、Maven等等设置。
如果想要对这些内容进行全局默认设置,那么请到这里:File → Other Settings → Default Settings进行设置。

杂项设置

  • 如果刚开始选插件的时候开启了Vim Emulator,那么文本编辑器是用Vim模式的,没用过Vim的人肯定不会懂其中的规则,
    特别是学习能力不强的新手(我也是这样),本来要学新IDE已经够累了,再学Vim要死人呃,所以最好是让IDEA关闭Vim模式。
    关闭方式:Menu Bar → Tools → 去掉Vim Emulator的勾选

  • 打开工具栏和工具按钮:Menu Bar → View → 勾选Toolbar以及Tool Buttons
    出现在菜单栏下的就是工具栏,出现在IDE两侧的是工具按钮。

  • 在打开多个文件时,IDEA默认是单行显示的,但如果想以多行显示,
    那就要这样设置:File → Settings → Editor → General → Editor Tabs,然后将Show tabs in single row的勾去掉。

  • 设置编译项目时所用的堆内存
    当你觉得编译项目不够快的时候,可以到这里设置:
    进入File → Settings → Build, Execution, Deployment → Compiler,其中Build process heap size(Mbytes)默认700,你可以把它改成1500。

  • 在打开IntelliJ IDEA时使它可以让我们选择要打开什么项目
    IDEA默认是开启时就打开最后一次打开过的项目,但如果你想在开启时选择打开什么项目就得这么做了:
    File → Settings → Appearance & Behavior → System Settings,然后将Reopen last project on startup的勾去掉。

  • 当我们编辑指定文件时,显示项目目录结构的工具窗口可以自动定位。
    在项目目录结构工具窗口那,点击齿轮状设置按钮,再把Autoscroll from source勾选上。

快捷键

快捷键是关键中的关键,我们是必须熟悉的。

如果当你不知道某个快捷键是用来做什么的,那么可以直接按Ctrl+Shift+A,通过你所要执行的功能的名称来查看它的快捷键或者直接诶调用它。

工具窗口

  工具窗口指的就是IDEA界面上的一片功能区,比如:代码编辑器就是一个工具窗口,显示项目目录的也是一个工具窗口,调试面板、显示文件内部结构的面板、运行程序时打印信息的面板等等这些都是工具窗口。

Project             alt+1              项目文件显示面板       
Run                 alt+4              运行输出面板           
Debug               alt+5              调试面板               
Structure           alt+7              文件结构面板           
Version Control     alt+9              版本控制面板           
Terminal            alt+F12            控制台                 
Editor              Escape             代码编辑器             
  • 瞬间隐藏所有工具窗口,让代码编辑器最大化:Ctrl + Shift + F12,编辑器最大化后再按一下就是恢复原状。

  • 切换到导航栏:alt + Home,切换到导航条就能让我们快速打开文件。

Tips: IntelliJ IDEA大多数功能界面都能直接使用快速查找功能
使用起来其实非常简单,比如alt + 1切换到Project工具窗口,然后直接输入你想要查找的内容,IDE就会给符合的文件进行高亮。

代码编辑器

  • 一般常用的Action
英文描述 快捷键 中文描述
Move the current line of code Ctrl+Shift+↑Ctrl+Shift+↓ 将光标所在的行上移或下移
光标在特殊语法层面上,那上移或下移就作用于整个语法
光标在类名或方法名上,那么上移或下移的将是整个类或方法
Duplicate a line of code Ctrl+D 复制光标所在行,并将复制内容粘贴到这一行后另起新行中
复制选中的内容并黏贴到后头
Remove a line of code Ctrl+Y 删除光标所在行
Cut a line of code Ctrl+X 剪切光标所在行 或 剪切选中内容
Comment or uncomment a line of code Ctrl+Slash(正斜线) 给光标所在行加行注释或取消行注释
Comment a block of code Ctrl+Shift+Slash(正斜线) 将选中内容用注释块包裹起来
Find in the currently opened file Ctrl+F 在当前所打开的文件中进行文本查找
Find and replace in the current file Ctrl+R 在当前所打开的文件中进行文本查找替换
Next occurrence F3 在查找过程中定位到下一个匹配处
Previous occurrence Shift+F3 在查找过程中定位到上一个匹配处
Navigate between opened tabs Alt+←Alt+→ 切换当前窗口中的子窗口
在编辑器中切换已打开文件,在调试窗口内切换调试器或控制台的子窗口
Navigate back/forward Ctrl+Alt+←Ctrl+Alt+→ 向前或向后跳转到上一次操作的位置
Expand or collapse a code block in the editor Ctrl+NumPad+Ctrl+NumPad- 展开或折叠光标所在的代码块
Create new Alt+Insert 新建元素(构造方法,toString等)
Surround with Ctrl+Alt+T 选择特定语法包裹选中的代码
使用for、if、try/catch等包裹所选代码
Highlight usages of a symbol Ctrl+F7 将文件中所有与光标所在的符号相同的符号都高亮
  • 常用的文本选择快捷键
    • 向左、向右选中或反选一个字符:Shift+←Shift+→
    • 向左、向右选中或反选一个词:Ctrl+Shift+←Ctrl+Shift+→
    • 在语法基础层面上拓宽或缩窄选中代码范围:Ctrl+WCtrl+Shift+W
    • 在同一时间内选中或反选多个内容相同的代码片段:Alt+JAlt+Shift+J

代码补全

  • 基础补全
    当你想要让IDEA帮你补全代码,比如关键字、类型名、变量名、方法名等等的补全,
    这些都能通过按Ctrl+Space进行补全,但建议把这个快捷键改成Ctrl+,(逗号),这样就不会和Windows自带的输入法快捷键冲突。

  • 智能补全
    这是基础补全的进阶版:Ctrl+Shift+Sapce,建议改成Ctrl+Shift+,(逗号)

  • 代码语句补全
    比如现在只写了一个iffor,你想要IDEA帮你补全这个语句所需的括号以及大括号或者分号,那么就直接按Ctrl+Shift+Enter

  • 参数提示建议
    当你想要看你正在调用的一个方法,或使用的一个泛型等等接收什么样参数的时候,那就按Ctrl+P,IDEA会给出参数提示。

导航定位

英文描述 快捷键 中文描述
Search everywhere Double Shift 在所有的范围中查找并定位
Navigate to class Ctrl+N 根据输入的类名定位到指定的Java类文件
Navigate to file Ctrl+Shift+N 根据输入的文件名定位到指定的文件
Navigate to symbol Ctrl+Shift+Alt+N 根据输入的标识符定位到指定的符号
真正来说是根据输入的字符定位到字段或方法
Recent files Ctrl+E 列出最近操作过的文件,并通过它们进行定位
File structure Ctrl+F12 在文件结构弹窗中进行定位
Select in Alt+F1 选择以什么方式定位当前文件
Navigate to declaration Ctrl+B 定位到声明处
Navigate to type hierarchy Ctrl+H 在指定的类型层次进行定位
Show UML pop-up Ctrl+Alt+U 在当前类型的UML图弹窗中进行定位

实时模版(live template)

这个功能在IntelliJ IDEA中是十分有用的,它能够加快我们的编码速度。

如果你是从Eclipse/MyEclipse转过来的,刚用IntelliJ IDEA,或许会十分不习惯:

  • 你想让IDE快速提供一个main方法,所以直接输入main,但很遗憾IDE并没有任何提示
  • 你想让IDE快速提供一个控制台的输出语句,所以直接输入sysout,但还是没有任何提示

你或许会很烦,怎么都说这IDE比Eclipse强大,怎么连这些功能都没有?
其实IntelliJ IDEA里自带的标准模版只是没有mainsysout这些关键字对应的模版,所以IDE并没有提示。
但如果你输入iter这个关键字,IDE就会提示了,你可以快速使用这个模版内容。
如果你想加入Eclipse那些模版,其实是我们是可以加入自定义模版的。

方法:File → Settings → Editor → Live Templates

到了这块面板,你就可以加入自己想要的模版了,当然,最好是把自定义的模版都归类到一个组,方便我们自己查找。

常见Q&A汇总

为什么使用正则表达式的向后引用、后向引用或回溯引用(back reference)这一特性时不起作用?

  我们在IntelliJ IDEA内使用正则表达式查找字符或替换字符时使用这个特性一般初学者都会遵照网上的一些教程使用反斜杠开头\后跟组号或组名进行回溯引用,但你会发现结果与网上教程不一致的,而你检查语法又没错,那肯定是有另一些原因。后来我也查询了这个问题才得知,在IntelliJ IDEA中要使用正则的回溯引用那得用$作为开头才能发挥作用
  比如:有正则表达式(\baa\b)x,如果你还想在后头引用前面的那个子表达式或组所匹配到的内容,那就不能使用\1,而应该使用$1





















英文描述 Eclipse IntelliJ IDEA 作用详细描述
Show UML pop-up Ctrl+Alt+U Ctrl+Alt+U 在当前类型的UML图弹窗中进行定位
Move the current line of code Ctrl+Shift+↑Ctrl+Shift+↓ Ctrl+Shift+↑Ctrl+Shift+↓ 将光标所在的行上移或下移
光标在特殊语法层面上,那上移或下移就作用于整个语法
光标在类名或方法名上,那么上移或下移的将是整个类或方法