IntelliJ IDEA 中有什么让你相见恨晚的技巧?

在使用IntelliJ IDEA的过程中,遇到过什么让你相见恨晚的技巧呢?比如Inject language,说出来分享一下吧~
关注者
8,507
被浏览
2,036,560

134 个回答

2019年9月1日12:14:23

回答的内容有点长了, 最近将文章整理到了github 上, 欢迎 star. 后续会慢慢完善

--------------------原文

2019年6月1日22:03:09 1️⃣

修改部分内容, 添加插件, 有时间会录制完整的gif

2019年7月11日14:39:29 2️⃣

添加 ctrl + ~ 详细描述

2019年7月18日13:51:18 3️⃣

添加 ctrl + alt + n 接口搜索描述

2019年8月3日22:40:56 4️⃣

添加idea 内置 ssh 工具描述

2019年8月7日01:04:20 5️⃣

添加插件 Alibaba Cloud Toolkit 神器描述, 推荐大家一看

2019年8月22日14:24:57 6️⃣

添加插件 Google Java Format + Save Action 结合, 拒绝重复性工作, 让你的代码更好看

2019年8月31日22:04:40 7️⃣

添加idea 常用设置, 有的设置可能会提升工作效率哟

2019年8月31日23:20:58 8️⃣

添加 idea git 版本控制篇

2019年9月5日09:25:48 9️⃣

添加 ctrl + ~ gif 演示图 (99%的人都不知道的技巧)

2020年5月18日23:44:50

添加多光标操作 (100% 的人都不太会)

2020年 5 月 29 日 05:57

公司给配了 mac 电脑 [黑苹果 ],现在所有的开发环境都切换到了 mac,后面会更新 mac 快捷键的版本。随便吐槽一下(option + command)组合键这是反人类

2020年12月14日09:44:59

添加,Debug 无阻塞断点描述,最近阅读了 2020.3 IntelliJ IDEA 的官方文档,我惊了。。。。,收获颇多。最为震惊的 有代表性的 就是 Debug 模块的 无阻塞断点,对应可以延展为

  • 使用 断点 进行 Log 输出,再也不需要 sout
  • 使用非阻塞断点 记录程序端的执行时间
  • 记录两个断点之间 堆 内存的变化

2021 年 12月05日

添加了 Intellij Idea 中版本控制介绍

不知道为啥,我两年前上传的 GIF 图,现在全部变成静态图了。已经联系官方了 正在排查问题


Intellij Idea 中的版本控制

查看这行代码是谁改的


在编辑器左侧右键,选择 Annotate with Git Blame



点击 左侧时间会在弹出的子窗口中显示这次修改的 hash,提交评论,和同步修改的文件有哪些

复现代码冲突

这里需要重点讲一下,因为我最近居然发现我们的同事居然还是用非常原始的方式解决冲突,就是一个文件一个文件的删除 ======= 这个。当时我看见的时候,我自己都惊呆了。
我们先手动的制造一个冲突
mkdir test; 
cd test;
git init -y;
echo 'console.info("one line")' > index.js;
git add .; git commit -m 'init';
git checkout -B feature/two;
vim index.js; # 在第二行添加 console.info("two line")
git add index.js; git commit -m 'feat: two line';
git branch master;
# 创建分支 3 
git checkout -B feature/three;
vim index.js; # 在第二行添加 console.info("three line")
git add index.js; git commit -m 'feat: three line';
git checkout master
# merge feature/two
git merge feature/two # 这个时候不会发生冲突
git merge feature/threee # 冲突发生


上图展示了发生冲突的所有过程

解决冲突


上面我们已经制造出了一个冲突,这个时候我们通过 Inteillj Idea 自带的 Version Controller 的功能来处理这个冲突。

直接在编辑器中打开冲突文件夹

打开项目演示解决冲突


在项目文件上右键,选择 Git ,选择 Resolve Conflicts

冲突处理弹窗


点击之后会弹出一个处理冲突的弹窗。接下来好好介绍一下这个弹窗

  • 1. 待合并分支
  • 2. 当前分支
  • 3. 冲突的文件列表
  • 4. 全部以 当前分支 「master」为准,丢弃 待合并 「feature/three」分支冲突文件
  • 5. 全部以待合并分支「feature/three」为准,丢弃当前分支「master」冲突文件
  • 6. 点击 merge 会打开一个子窗口合并明细
  • 7. 双击文件和打开一个子窗口进行代码 merge 明细
  • 8. 显示了合并分支文件状态,上图标识合并的两个分支 文件都是更新状态
  • 9. 以分组列表的形式展示



这里就进入到详细的单文件合并步骤了

  • 1️⃣ 当前分支的修改
  • 2️⃣ 合并区域
  • 3️⃣ 待合并分支的修改
  • 4️⃣ 显示本次合并的明细,就是看除了当前文件还有哪些文件需要合并
  • 5️⃣ 将左侧 console.info("two line") 合并
  • 6️⃣ 将右侧 console.info("three line") 合并
  • 7️⃣ 直接接受左侧的代码
  • 8️⃣ 直接接受右侧的代码
  • 9️⃣ 引用合并的内容


查看代码历史



点击 Show History


点击 Show History 之后底部会弹出当前项目的历史提交记录

  • 1️⃣ 这里显示的当前项目的提交记录
  • 2️⃣ 可以指定想要查看历史记录的分支
  • 3️⃣ 可以选择只看某个人的提交记录
  • 4️⃣ 时间赛选
  • 5️⃣ 选中左侧的提交记录,这里会展示此次变更了哪些文件,双击文件会在弹出的新窗口中显示代码变更情况


上面是直接选中的整个项目查看整个项目的历史提交记录,有的时候我们只想查看某个文件夹,或者是某个文件的代码变更记录。整个时候我们只需要在对应的文件夹或者文件上右键悬着即可。

分支创建


根据实际工作场景出发,先列举一下会创建分支的集中情况。在实际的应用场景来看如果用 Idea 来解决。

  • 开发新功能,我们需要从现有分支创建新的 feature 分支
  • 我们正在开发 feature 分支,但是此时线上出 Bug,我们需要从 master 分支创建 hotfix 分支来修复
  • 我们在浏览源代码,我们浏览代码历史上某个版本的代码
从现有分支创建新的 feature 分支,这是最简单的,甚至都不需要用 idea 了,代码也是一行搞定 git checkout -B feature/xxx


直接从项目上直接右键创建即可

我们正在开发 feature 分支,但是此时线上出 Bug,我们需要从 master 分支创建 hotfix 分支来修复


这种情况其实是正式项目中的常态吧,毕竟线上环境是复杂的,问题随时都会发生。但是问题就是可能我们现在开发的 feature 分支还没有开发完成,我们自己也不想用 commit 进行提交。这个时候就需要用到 git 的 stash 功能了。


在切换前先 Stash Changes,将目前修改的代码暂存


在弹窗中给这次暂存添加 备注 然后点击 create stash

在处理好 stash 之后我们需要切回到 master 分支去创建对应的 hotfix 分支


点击 Branchs


选择 master 分支进行切换,切换后创建对应hotfix 分支,在修复好 hotfix 分之后,我们需要回到对应的 feature 分支继续开发未开发完成的功能。


选择 Unstash Changes


这里会有自己存储的 stash 历史,点击 apply stash 进行恢复

我们在浏览源代码,我们浏览代码历史上某个版本的代码




添加修改「git add xxx」


我们每次新增的代码需要通过 git add xxx 命令将代码从 工作区 添加到 缓存区


上面的 add.js 文件是我们新添加的文件



提交修改「git commit xxx」


点击 Commit Directory


本次 commit 的文件列表
文件修改了,但是没有在缓存区的文件
修改列表,我们可以为某个代码文件集合专门命名 change list
作者
Amend commit
Sign off commit
在提交之前 格式化代码
Rearrange 代码
优化 imports,在代码中没有使用的 package 会自动删除
分析代码,如果有代码异常会提示
简单代码有没有 TODO 没有完成会提示
优化代码
更新 copy right
提交的message
上下选择看其他文件的变动
选中文件的代码变动
commit

推送代码 「git push」



拉取代码「git pull xxx」



在便捷一点


其实上面介绍的基本上就涵盖了我们日常项目中大部分使用的功能了,但是可以看到我们在上面演示的操作基本上不是在文件夹上右键菜单来选择,但是说实话不是太跟手,用起来很麻烦。
其实 Jetbrains 的开发人员应该也是考虑到了这一点,其实在软件的界面中有很多位置可以操作 Git


❤️ 拉取代码
提交代码
推送代码
查看历史
rollback


点击下方的版本号,也可以看到所有本地的分支和远程的分支,可以在这里进行分支合并,和远程代码更新。

在快一点 VCS Operations


代码的更新与提交提示是一个非常高频的操作,它值得拥有更加便捷的方式,Jetbranins 也提供了更加编辑的方式


Mac: ctrl + v
上面提到的所有的操作 在这里都提供了便捷的操作方式

  • Commit
  • Rollback
  • Show History
  • Annotate With Git Blame
  • Show Diff
  • Branches ...
  • Push ...
  • Stash Changes ...
  • UnStash Changes ...


这里不仅可以用 Git 的功能,还有 Idea 自己的 Local History 也背展示在了这里

一些快捷键
正常编码的情况下 使用快捷键的方式肯定更快,一下是针对 Git 操作整理的快捷键

名称 对应 Git 操作 快捷键「Mac」
将文件添加到工作区 git add xxx Option + Command + A
将工作区文件添加至缓存区 git commit xxx Command + K
拉去远程代码 git pull xxx Command + T
推送代码到远程仓库 git push xxx Command + Shift + K
暂存文件 git stash xxx Ctrl + V -> Stash
恢复暂存 git stath pop Ctrl + V -> Un Stash
删除掉缓冲区修改 git reset --hard ^ Command + Shift + Z
解决冲突 Ctrl + V -> Resolve Conflicts...



Idea 多光标操作

操作基础

在相同内容后生成光标,一个一个选择
在所有的相同的内容后添加光标,一步到位
数列光标,鼠标拖动
行位光标
在指定位置添加光标


格式批量调整

将左侧的格式转换为右侧的格式
ctrl + alt + enter 将光标移动到当前行的上一行


批量添加 Swagger 属性注释

将上图左侧只有注释的类,添加上 swagger 信息

在多个相同结构 Json 中提取某字段信息

提取左侧 Json 中所有的 role 字段

Debug

移动/ 复制断点

删除断点


配置断点属性

在我们进行调试的时候,很多时候其实并不需要所有断点发生情况都触发,我们需要有条件的触发,这个时候我们就可以为这个断点本生设置条件,只有在条件范围内触发后 在触发断点。


无阻塞断点

这个应该大部分同步不知道


调试窗口介绍

调试 工具窗口为每个会话显示以下选项卡:

  • Frames:使您可以在线程的调用堆栈中导航。
  • Variables:列出当前上下文中可用的变量,并让您分析和修改程序状态。
  • Watches:让您管理手表。默认情况下,监视显示在“ 变量” 选项卡上,以更有效地利用屏幕空间。如果您有很多手表,请考虑在单独的标签中查看它们。
  • Console:显示程序输出。
    对于本地会话,该选项卡的作用与您在未连接调试器的情况下运行该程序的作用相同。唯一的区别是调试器输出(例如,来自断点的日志消息)已添加到控制台。
    当您附加到进程时,程序输出不会重定向,并且调试器控制台中仅显示调试器输出。
  • Threads:显示活动线程列表,并允许您在它们之间切换。在此选项卡中,您可以以文本格式导出线程信息。
  • Memory:提供有关堆上当前可用对象的信息,并允许您监视和分析它们的生存期。
  • Overhead:允许您监视特定调试器功能消耗的资源并优化调试器性能。


idea 快捷键

方法参数提示

ctrl + p

折叠代码

ctrl + -

全局查找文本

ctrl + shift + F

最近修改的代码

ctrl + E

自动代码片

ctrl + j

实现接口方法

ctrl + i


查看当前类的子类

ctrl + h



删除当前行

ctrl + y

重写 或者 实现接口或父类方法

ctrl + o

将当前行和下一行进行合并

ctrl + shfit + j

将光标跳到当前行的上一行

ctrl + alt + enter

显示类之间的关系

ctrl + alt + u


删除类中没有用到的package

ctrl + alt + o

进入设置界面

ctrl + alt + s

在当前光标在的这样一行的下一行添加一行, 并自动添加括号, 标点符号等

ctrl + shfit +enter

弹出, 当前类中的方法集合

在做javaweb的时候, 一个controller 方法太多, 不好查找, 这个方法就派上用场了, 一般的controller的方法名增删查改, 就能很快定位到代码的位置

ctrl + F12


添加书签

ctrl + f11

比较强大的几个快捷键之一 Ctrl + ~(感叹号旁边的按键)

ctrl + ~

共有五种可供选择的操作

Switch Code Formatter (切换代码格式化程序)

可以在eclipse和idea的代码格式化之间快速转换

Color Scheme (配色方案) (ctrl + ~ 选择 Color Scheme)

可以设置一些常用的配色, 字体样式, 可以一键切换

Keymap (快捷键列表) (ctrl + ~ 选择 Keymap)

我们的同事有的喜欢在 idea 上用 eclipse 的快捷键, 有时候帮忙调试程序的时候, 就有点恼火了,对于用习惯了 idea 快捷键的人, 是真的用不习惯 eclipse 的快捷键, 这个时候 Keymap 就排上用场了

idea 提供了10多种快捷键的可选择的模式, 任我们随意切换, 这样就可以在帮同事调试代码时临时调整快捷键, 调试完毕后在切换回去


View Mode (显示模式) (ctrl + ~ 选择 View Mode)

可以屏蔽其他内容, 只显示类中的相关代码, 让你专注编程

搜索文件

ctrl + shift + n

搜索类合

ctrl + n

抽取局部变量

ctrl + alt + v

进入到实现子类中

ctrl + alt + b



格式化代码

ctrl + alt + L

idea 多光标的使用

  • 按下滚轮上下拖动鼠标即可
  • 在相同的元素后面添加光标 alt + j
  • 选中内容 按 ctrl + shift + alt + j 统一修改相同的内容

选中当前单词(非常好用)

ctrl + w


alt + 左右箭头

在窗口之间移动


运行当前类

ctrl + shift + F10

从多项目中启动一个 debug 模式

alt + shfit + F9

从多项目中启动一个 正常模式

alt + shfit + F10

快速的查看选中类, 选中方法的定义

有的时候我们不想进入方法内部, 或者进入类的内部查看细节, 想要在外面就探查清楚, 就可以使用此种方法
ctrl + shift + i




比较强大的几个快捷键之一 Ctrl + ~ (感叹号旁边的按键)

ctrl + ~

共有五种可供选择的操作

Switch Code Formatter (切换代码格式化程序)


1. Color Scheme (配色方案)

可以设置一些常用的配色, 字体样式, 可以一键切换



2. Code Style Scheme


3. Keymap (快捷键列表)



4. View Mode (显示模式)



5. Look and Feel (设置软件主题)

IDEA 版本控制篇 GIT (不一样的操作方式)

查看每一行代码的条件人, 提交时间(大部分人不知道)


选择后入下图所示


鼠标移动上去还能看到提交详细信息


克隆远程代码

git clone origin url

常规操作


装逼操作


拉取远程代码

git pull


快捷方式

ctrl + t

将暂存区代码提交到本地库

git commit -m 'message'





将本地库 提交到远程库

git push



快捷键

ctrl + shift + k

alt + 1 + 8

切换分支, 或拉取远程分支


以下提供几种快捷方式

ctrl + shift + `

alt + ~ + 7



查看当前打开类 历史记录

alt + ~ + 4

查看项目工程历史记录

选中工程后

alt + ~ + 4

alt + 9 切换到 Version Control 面板 选择log




idea 内置ssh远程工具

平常在开发的时候, 避免不了需要远程服务器操作, 平常我们可能会使用 `xshell` 等连接工具, 但是其实 `idea`也内置了这样的功能



上图中展示的是 IDEA 中两个非常棒的内置功能,可以在 Tools -> Start SSH session 中开启远程服务器的终端,在 IDEA 下方可以执行远程指令;也可以在 Tools -> Deployment ->Browse Remote Host 中展开如图右侧的结构,可视化地浏览服务器上的文件列表,检查应用是否部署成功。

这功能真的超方便

IDEA 常用设置

0x01 IDEA以新窗口的形式打开多个项目

File - Settings - Appearance & Behavior - System Settings


0x02 修改IDEA 默认编码 -> UTF-8

File - Settings - Editor - File Encodings

0x03 设置统一编译器和编译版本

File - Setting - Build - Compiler - Java Compiler


0x04 设置类注释

File - Editor- File and Code Templates
/**
* @Package ${PACKAGE_NAME}
* @author atom.hu
* @date ${DATE} ${TIME}
* @version V1.0