IDEA 使用入门

intellij

  • 来阿里之前,还在使用eclipse,后来受@无独 同学影响,开始使用intellij,从此以后再也没想过回到eclipse。最近周边的人使用intellij越来越多,还有一部分在eclipse和intellij之间徘徊选择,本文目的是通过我们介绍intellij的功能,让大家对intellij更了解,如果想从eclipse改到intellij,下面增加eclipse中常用功能和intellij上的对应关系,希望能够帮助大家快速熟悉intellij。

功能介绍

  • 下面列举了一些常用的功能,功能远不止这些,大家体验一下就知道了,官方features

提升编码效率

Smart completion

  • 根据变量的类型,生成推荐列表,并列表中的推荐代码,会根据你的使用频率,将常用的代码,移动到上面。例如:图中SecureRandom选中一次之后,下次再random=new 提示列表SecureRandom会显示在最上面。 screenshot

Chain completion

  • 相比(Smart completion)提示更深入一层。如图,会结合上下文,生成推荐列表,例如:根据上面定义的strings变量和args参数,推荐foreach可能会使用到这两个变量,并且把strings放在第一位。 screenshot

Inspections and quick-fixes

  • 自带findbugs以及修复提示,及时发现代码的问题。 screenshot

开发者的角度设计

以编辑为中心

  • 大多数的时间都花在写代码上,intellij让用户可以再编辑窗口完成很多任务,如图在编辑窗口,不需要跳转和打开新tab查看类的定义。创建类时,不需要像eclipse一样,填写一堆表单项。 screenshotscreenshot

Inline debugger

  • debug过程中,大家经常需要查看变量的值,intellij直接将变量值显示在右侧,不用再将鼠标hover过去查看了,并且变量更改后,会有高亮提示。 screenshot

内置好用的开发者工具

  • 开发过程中,除了编辑代码,还会用到其他的框架和工具完成开发工作(svn/git/maven等)。intellij直接集成了这些好用的工具。

Version control

  • 集成了svn/git等版本控制工具客户端的功能,并且非常好用,不需要自己安装插件。

maven 插件

  • intellij与maven集成的非常好,编辑pom的智能提示、pom修改后依赖自动更新导入和处理二方库间的依赖关系。

Decompiler

  • 查看没有源码的class时,大家都会用到。

Terminal

  • 简单操作,不离开编辑器就可以打开终端执行命令,并且终端打开后,直接定位到所在的项目目录。

为何放弃eclipse

  • 看过上面的功能介绍,应该已经可以感受到intellij比eclipse好的地方了吧。下面再简单说明一下,我使用过程中的感受。更多的点大家体验一下就知道了。

编辑

  • 自动完成和提示功能(Smart completion/Chain completion),比eclipse更智能。
  • inspections 功能很强大,帮你优化代码,查找问题,以后再也不用每周五定闹钟执行findbugs了。
  • 项目中文件内容通过terminal或者其他方式修改了,不需要自己刷新,intellij自动检测到变更加载修改。
  • 很多地方的搜索很给力,都会有高亮,例如:编辑里常用的几个操作(最近修改的文件、类结构等等)都支持搜索、设置里面的搜索、快捷键里面的搜索,体验到就知道了。
  • eclipse透视图有印象没,就是各种模式(javaee/java/debug/package explorer),当我们在处理不同的内容时,Eclipse总是试图为我提供“最佳的透视图”。对于我来说,我看到的只是每次从开发切换到调试或是重构透视图时,屏幕的布局就会变得一团糟。intellij就会好很多,这个自己不说了大家自己体会好了,如果你是键盘控,intellij绝对不错的,打开和关闭类似eclipse里面的package explorer(eclipse里面真心记这个快捷键太费劲)直接简单的cmd+1就搞定,后面会演示。
  • 集成了多种语言的开发环境,并且操作都很统一。例如:JavaScript、velocity、html等都会语法提示(这个提示比eclipse好多了),快捷键也是一样的。

debug

  • 首先不会跳转到debug的透视图。
  • Smart step into功能:如果一行中存在多个方法调用,可以选择进入到哪个方法中。
  • Inline debugger:上面讲了,直接在代码右侧显示变量的值。

内置工具

  • maven插件,
    • 依赖管理:A依赖B,刚导入的A之后,A会依赖B的jar,再导入B之后,A就会直接依赖B这个工程了,删掉B同理,会直接又依赖回B的jar(eclipse需要修改build path/mvn eclipse:eclipse)。
    • 项目导入:只要你的工程有pom文件就ok,选中pom直接导入工程,这功能后面会演示(eclipse上,我们要先执行mvn eclipse:eclipse后,再导入)。
  • svn/git插件也比eclipse的好用,功能更强大。
  • 其他的如Decompiler功能,eclipse都需要额外安装。

intellij开发常用功能

  • 为了方便大家从用intellij替换eclipse,这里面列出我们eclipse常用操作对应在intellij里面要怎么实现(主要都是我常用的,可能不够全面慢慢会补全)。

概念

  • 理解intellij和eclipse不同的概念搞清楚,后面就好弄多了
  • project(intellij)==workspace(eclipse)
  • module(intellij)==module(eclipse)

工程

创建工程

  • 打开intellij 选择create new project screenshot screenshot screenshot
  • 工程创建成功后,会提示导入modules(一个module相当于我们的一个应用/二方库),点击+,import module导入已存在的maven项目 screenshot
  • 一路下一步,第一次使用没有配置SDk,参照下图,找到jdk安装目录。 screenshot
  • SDK也可以在Dependencies中配置
  • 默认依赖存储在项目的.iml文件中,eclipse是存储在.classpath中,此处可以选择(默认即可)。 screenshot

导入应用/二方库

  • 工程创建成功后,可以通过file->import modules导入应用/二方库,对于maven项目选择工程的pom文件,下一步下一步就ok了 
    screenshot
    screenshot

  • 对比eclipse:

    • 不需要像eclipse那样执行mvn eclipse:eclipse,有pom即可导入

module之间的依赖

  • 对于intellij基本上不需要手工修改依赖,导入时maven插件自动识别依赖关系,例如:图中finance-partner依赖二方库qualification-open-share,导入二方库时会自动将对二方库的依赖,由依赖jar包,改为依赖二方库module,可以通过product structure(快捷键cmd+;)查看。 screenshotscreenshot
  • 对比eclipse:
    • 需要通过eclipse build path方式编辑

修改iml文件:类似eclipse classpath方式

  • 每个module都会有一个*.iml文件,是module的配置信息,里面包含了module依赖的jar和工程依赖。所以也可以通过修改这个文件,修改依赖(用的很少)。screenshot

编辑

  • 下面主要说下编辑中的常用操作,里面涉及的快捷键都是我设置的,如果你的不好用,每个操作我都写了名字,可以到keymap里面去自己查找和修改。

快捷键相关(必看)

  • intellij 快捷键,到perferences里面搜keymap,可以直接修改成eclipse的(我觉得既然用就彻底一点,不要用这个快捷键),或者copy一个mac 10.5+ 自己进行修改,可以根据名字搜索。
  • tips:intellij的查找很高端的,还可以直接用快捷键查找,如果你知道快捷键,但是不知道这个操作在那里或者叫什么名字,可以用快捷键反查。

screenshot

创建class/package

  • File->new...->class 很简单.(快捷键:我的快捷键ctrl+N)
  • tips:说实话这个功能,设计的很简单,刚开始的时候我以为创建类的时候不能设置包,要先创建好package,然后在包下面创建类,原来不用,创建类的时候直接写:com.alibaba.Test就ok了,会帮你自动创建好包名。

类旁边的小图标

  • intellij里面文件左侧都有小图标,C代表是类(蓝色的),I代表是接口(绿色的),还有一种C的蓝色小标上面有一块绿色能猜得到吗?答案在图下面

screenshot

  • 答案: 抽象类

查找类

  • intellij Navigate->Class...(快捷键:我的 cmd+N) ,第一次按快捷键,intellij会先推荐工程内部的类,如果想查找依赖的jar中的类,再按一次快捷键即可。

    screenshot
    screenshot

查找普通文件

  • intellij Navigate->File..(快捷键:我的 cmd+shift+N)

screenshot
screenshot

查看类结构(包含哪些方法什么的)

  • intellij 里面 Navigate->File Structure (快捷键,我的是cmd+F12)。功能如图:

screenshot

  • 直接输入字符查找 screenshot

查看类的定义

  • 同eclipse里面的open declaration(快捷键:F3),intellij Navigate->Declaration(快捷键 我的cmd+B)
  • 如果不想离开当前编辑的tab,直接view->quick definition(cmd+shfit+I),在当前窗口查看。 screenshot

查看类/接口实现

  • 同eclipse里面的quick type Hierarchy(快捷键:cmd+T),intellij Navigate->Implementation(s)(我的快捷键 cmd+alt+B)
    screenshot

    查看javadoc

  • 同eclipse里面的F2,可以看到类或者方法的javadoc, intellij View->quick Documentation (ctrl+J) 
    screenshot

格式化

  • eclipse 右键source->format, intellij Code->Reformat Code....(alt+cmd+L)
  • intellij格式化设置,打开Perferences...(cmd+,),找到code style->manager 导入alibaba-intl-format文件

screenshot

设置在intellij保存时的自动format code

参考 http://stackoverflow.com/questions/946993/intellij-reformat-on-file-save, 录制一个宏即可.


Edit -> Macros -> Start Macro Recording 
Code -> Reformat Code 
File -> Save all 
Edit -> Macros -> Stop Macro Recording 
Name the macro (something like "formatted save") 
File -> Settings -> Keymap 
Right click on the macro. Add Keyboard Shortcut. Set the keyboard shortcut to Control + S. 
IntelliJ will inform you of a hotkey conflict. Select "remove" to remove other assignments. 

格式化import设置

  • intellij 默认有个设置(一个类里面同一个包下面的类达到5个就会自动合并成xxx.xxx.*;),首先说下这个的问题。
trunk代码,版本一 
import java.util.ArrayList; 
import java.util.EnumSet; 
import java.util.List; 
import java.util.Map; 
import java.util.Set; 
修改->intellij格式化后,ci到trunk,版本二 
import java.util.*; 
xxxx 
new HashMap();//注意新增了HashMap 

从版本一 checkout代码,eclipse格式化后,版本三 
import java.util.ArrayList; 
import java.util.EnumSet; 
import java.util.List; 
import java.util.Map; 
import java.util.Set; 
xxxx 

版本三开发完了,与现在的trunk(版本二合并) 
import java.util.ArrayList; 
import java.util.EnumSet; 
import java.util.List; 
import java.util.Map; 
import java.util.Set; 
xxxx 
new HashMap();//注意新增了HashMap 
上面是合并后的代码,有没有发现什么不对,是的,代码编译不过了,因为没有import java.util.HashMap没有。这就是用*的问题。 
  • 我们平时开发还是推荐,用哪个就引用哪个,不用的就不引用。所以建议把合并成 import xxx.xxx.*;这个设置改掉,方式就是把默认的5/3改成100好了(哪个包下面要是有100个类,那就算我们运气差,再改大点),如图:screenshot

最近使用的文件

  • 开发过程中经常来回修改多个文件,intellij里面View->Recent Files(cmd+E),而且继续搜索呢, eclipse里面,没发现查找最近使用的文件功能(不过可以从打开的文件里面去搜索)。
  • 除了可以查找最近使用的文件,还可以查找最近使用的tool windows,如图中左侧列表

screenshot

查看被谁调用了

  • eclipse 里面的 Open Call Hierarchy
  • intellij Edit->Find->Find Usages File(cmd+F7)

screenshot

  • 选中方法/类,右键Find Usages File也可以
    screenshot

  • 注意:如果发现不好用可以看一下 Edit->Find->Find Usages Setting 里面的scope 设置的对不对

screenshot

eclipse里面的quick fix 功能

  • eclipse里面写代码的时候,左侧会出来一个小黄点或者你自己按下(cmd+1),就会展示出来一些建议。
  • intellij也有这个功能,并且提示更智能一点。Show Intention Actions(alt+回车)

screenshot
screenshot

生成代码功能(get/set等)

  • 经常要生成get、set等方法,intellij上跟eclipse一样可以自动生成,只需要自己选择一下,快捷键: Main->code->Generate...(shift+N)
  • ps: 我刚开始很傻的以为一次只能生成一个get方法,其实按住shift,移动上下键,就可以选择多个了。

screenshot

前一个位置/后一个位置

  • 方便来回移动,例如:进入一个类想退回来,可以选择recent files里面找到再回来,也可以直接 Query class 不过的多麻烦啊,直接Navigate->Back (alt+cmd+左箭头)/Navigate->Forward(alt+cmd+右箭头)

最大化编辑的窗口

  • 两种常用模式:
    • Full Screen mode模式,将编辑窗口全屏。(view->Full Screen mode)
    • Presentation mode模式,会将代码字体放大,适合做编辑演示。(view->enter Presentation mode)

定位到module文件的位置

  • eclipse里面有个功能,左侧视图点击一下直接展开工程定位到当前编辑的那个文件。
  • intellij也有,不过图标变成了一个小地球,还可以勾选右侧两个选项自动定位和收起。screenshot
  • tips:其实最好的是它还有快捷键(eclipse里面我不知道是什么),这样就不用点了。intellij Navigate->Select In....(alt+F1) 
    screenshot

    跳转到某一行

  • 快捷键默认cmd+g,菜单navigate->line...

live template模板

  • 针对结构类似的代码,intellij提供了模板功能(live template),只需要敲几个字母就可以生成一段代码,以下是默认的几个模板例子。
  • 生成foreach
ArrayList<Object> objects = Lists.newArrayList();
//输入iter按tab,自动生成以下代码,参数objects是intellij根据上下文自动匹配上的
   for (Object object : objects) {

   }
//sout生成+tab,生成 
System.out.println();

//编辑pom文件时,输入dep+tab生成
<dependency>
   <groupId>$GROUP$</groupId>
   <artifactId>$ARTIFACT$</artifactId>
   <version>$VERSION$</version>
</dependency>
  • Intellij现成的模板见Preferences(cmd+,) screenshot

File and Code Templates

其他

查询快捷键及相关操作

  • 记不住快捷键,快速搜索和执行你想找的操作
  • 快捷键:cmd+shift+A

screenshot

内部集成的工具

version control

svn
  • 每次到终端去svn up/svn commit 多麻烦,直接插件+快捷键解决。eclipse有subversion插件,intellij也一样,并且功能更强大。
update&commit
  • intellij 的subversion插件默认就带了,不像eclipse装上之后想设置快捷键还挺麻烦的。工程导入进来,直接右键就可以看到菜单。我习惯上alt+cmd+c = svn commit ,alt+cmd+u= svn update

screenshot

commit
  • 提交功能很强大,跟终端就不比了。与eclipse的插件比右侧多了,很多操作,例如提交前格式化代码,检查你有哪些文件可以优化,有警告啊,有todo没做啊

screenshot

颜色变化
  • eclipse里面可以在项目上通过*号看到是否有修改,intellij也是可以的,不过是通过颜色,
    • 没修改时是黑色
    • 有修改时是浅蓝色
    • 新增的文件是绿色的
    • 修改过的文件是蓝色的

screenshot

查看 修改的文件
  • view->tool windows->changes,这里可以查看所有修改(快捷键cmd+9) screenshot
setting
  • 直接在ide setting里面有version control相关的配置,默认就支持了git&hg&svn

screenshot

git
  • 基本操作同svn,只是多了个push操作,如图 screenshot
maven
  • 只能说intellij和maven集成的太好了
使用
  • 功能不讲了,自己体会吧,最开始也说了一个好处,会自动帮大家识别依赖,包括自己修改pom也会自动识别。对比eclipse的maven插件,intellij有个单独的tool window操作很方便,除了默认帮你搞的那些,你想自己执行个mvn clean install -Dmaven.test.skip之类的,直接点一下就ok(省去了进入terminal->cd xxx->执行命令 好几个步骤呢!)。 如果执行要跳过测试,在ide设置里面勾一下就行了。PS:(window可以设置快捷键的,我设置成cmd+7) 话少说,上图:

screenshot
screenshot

  • maven的vm参数,改改参数,intellij会更快,大家都懂得。这里要设置两个运行时和项目导入时maven的设置。

screenshot
screenshot

插件

插件安装

  • 进入cmd+,进入preferences->plugin,直接搜索想要的插件即可,没有的话可以从仓库或者用本地下载下来的文件来安装。 screenshotscreenshot

推荐插件

ideaVim
  • 通过vim的方式写代码,基本上支持vim的大部分功能,比eclipse上的vim插件好用太多。
color theme插件

这里有IDEA版本的color插件 [http://ideacolorthemes.org/home/
安装过程:

  • 下载 theme的jar包
  • File->Import Setting->导入jar包即可
  • 切换主题:preference->editors->colors & fonts 选择对应的scheme

screenshot

建议先切换到默认的暗色主题,然后再切换color theme,这样侧边栏也会变成暗色

修改配色:preference->editors->colors & fonts下面的子选项可以自定义各个配色,直接点击要改部分的颜色即可。

checkStyle
  • 结合checkStyle配置文件,检查代码是否符合规范。
junit generator
  • 辅助生成junit单元测试类
ASM ByteCode
  • 查看类文件生成的字节码
lombok plugin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值