IntelliJ IDEA-based IDEs Tips & Tricks

CodeingBoy 6月 09, 2018

这篇文章是对 2016 JetBrains 开发者日中 IntelliJ IDEA-based IDEs Tips & TricksIntelliJ 家族开发工具使用技巧)的基于英文版的文字汇总。英文版原汁原味,但是收音不太好,不太容易听清楚;中文版由于是同声传译效果不错,但是感觉缺失了部分信息。

下面的总结中,使用的项目是与视频一致的 IntellJSample 项目,可以从这里获取。使用的版本是 IntelliJ IDEA 2018.1。

JetBrains Toolbox

可以通过安装 JetBrains Toolbox 获得一站式的安装和升级 JetBrains 全家桶体验。

另外可以点击每个产品右边的设置按钮对产品启动的参数进行配置。比如可以配置 IntelliJ IDEA 的启动堆大小。

Font ligatures

Font ligatures 其实就是可以将 !=、==、>= 等符号替换成 ≠、=、≥ 的功能,在设置中启用 Font ligatures 并设置成支持的字体后就可以看到效果了。

只支持以下字体,其它字体没有效果:

  • Hasklig
  • Fira Code
  • Patched version of Monoid/Monoisome
  • Pragmata Pro

背景设置

按下 Ctrl+Shift+A,输入“set background”,回车即可打开背景设置。可以给 IDE 设置一个你喜欢的背景,并设置透明度、位置等参数。

Presentation Assistant

安装”Presentation Assistant“这个插件后,可以在屏幕底部显示当前的键盘操作,并且还能显示 Windows/Mac 平台上的键位。

Navigating

Class

按下 Ctrl + N,在弹出的对话框输入类名即可快速到达对应的类。

不需要输入全文,输入部分的关键字也可以到达对应的类。

File

按下 Ctrl + Shift + N,在弹出的对话框中输入文件名即可快速打开对应的文件。

如果要到达某个文件指定的行,比如到达上面那个文件的第10行,在文件名后面输入“:10”(即“j8r:10”)即可。

可以通过在开头输入一个斜杠 / 导航到对应的目录。

Symbol

如果你想要到达 Order 类的 id 变量处,你可能会先按 Ctrl + N 打开 Order 类,然后再按 Alt + 7 打开 Structure 搜索 id 域。但其实有更好更快捷的方法。

直接按 Ctrl + Shift + Alt + N 打开 Navigate Symbol,输入 Order.id 即可。

当然,如果你已经打开了 Order 类,直接输入 id 即可。或者要到 getId 方法,也是输入 getId 即可。

Declaration

想要查看一个类的声明?你可能会把光标移动到那个类上,然后按 Ctrl + B。

但是这样会跳出你当前的文件,如果不想跳出,可以按 Ctrl + Shift + I,在一个弹出窗口中查看声明。这个功能称之为 Quick Definition。

Implementation

在一个类或接口上按 Ctrl + Alt + B 可以查看该类或接口的实现列表。

Project window

按 Alt + 1 可以打开 Project 侧栏,直接输入关键字即可搜索。

另外在侧栏情况下,可以按 Ctrl + Alt + Left/Right 调节侧栏大小(上下的侧栏则按 Up/Down)。

Search Everywhere

连按两次 shift 键即可打开 Search Everywhere,前面的一些技巧可以通过这个入口来调用。

比如要到达 Order 类,输入 Order 即可。

除了之前说到的 File/Class/Symbol 等,也支持对 Action 和 Preference 的搜索。

如果不想要显示那么多选项,可以在右上角的设置设置搜索结果的类型。

对于 Preference,可以直接打开或关闭。

另外,按 Alt + Up/Down 可以遍历搜索历史记录。

Find Action

Ctrl + Shift + A 可以打开 Find Action 对话框,输入关键词即可调用各种操作,如果你要进行一些不太熟悉的操作(可能你还不知道它在哪,或者没有快捷键),就很有用了。

比如要重命名文件,输入 rename 即可调用。

我们可以通过设置别名来减少一些常用操作的输入量,比如 Test Restful Web Service 这项功能,可能我们要输入 “test rest” 才能检索出来。但在 Keymap 中设置别名后,就可以只输入 “ws” 来检索了。

在 Project window 快速定位当前文件

当我们使用 Ctrl + N 等打开文件时,Project window 是不会自动定位到打开的文件的,有两种办法可以启用帮我们快速定位:

第一种是在 Project window 右上角的设置中启用 “Auto scroll from source”,但每打开一次文件就会改变 Project window 中的定位。

另外一种是在 Keymap 中设置一个 ”select in project view“ 的快捷键,以后每按一次这个快捷键,就会在 Project window 中定位当前打开的文件。

快速切换文件

最有效率切换文件的方式是什么?禁用 Tab。相比于通过切换 tab 的方式在文件之间切换,IDE 已经为你提供的更好的切换途径。用鼠标在 100 个 tab 之中找到你要去到的文件效率太低了。“The best thing you can do with mouse with IntelliJ IDEA, is never use it.”

那我们要怎么切换文件呢?前面所介绍的技巧是一部分,另一部分是 Ctrl + E 和 Ctrl + Shift + E,分别会显示 Recent Files 和 Recent Edited Files。

Ctrl + E 会默认定位到第二个文件,如果要在两个文件之间来回切换,直接回车即可。

 

如果想要返回上次跳转时的位置,可以使用 Ctrl + Shift + Left/Right。

快速隐藏所有窗口

在工作的时候可能会打开很多窗口来查看或者进行操作,想要快速回到编辑状态的话,只需要按 Ctrl + Shift + F12 即可,这样所有窗口都会立刻隐藏起来。

再按一次就可以把之前的窗口都恢复回来。

多窗口/分隔标签作业

在进行之前介绍的导航操作时,选定文件后按 Shift + Enter 可以在新窗口中打开。这样可以(在多显示器上)并行对比文件。

如果只有一台显示器的话,也可以用 Spilt Vertically/Horizontally 来达成目的。

编辑器常用快捷操作

想要选择代码?按住 Shift 移动光标?用鼠标选择?试试 Ctrl + W ,每按一次会拓展选择的范围(方法名->整个方法->…),按 Ctrl + Shift + W 可以缩小选择的范围。

选中了代码想要移动?Ctrl + X 和 Ctrl + V(顺带一提,按 Ctrl + Shift + V 可以打开粘贴历史)?不如选择代码后按 Shift + Alt + Up/Down。

代码格式化

很多人应该都知道代码格式化的快捷键是 Ctrl + Alt + L,代码格式化不仅能够格式化代码,移除文件中不必要的空行和空格也很有用。

而在 VCS commit 的时候也可以勾选选项来让 IDE 帮你对提交的文件做一次格式化。

代码格式化依赖于你给出的代码风格设置,你可以到设置里面去一个个调整,但更好的办法是,选择一段风格合适的代码,按 Alt + Enter 选择 Adjust code style settings,让 IDE 帮你设置。

新建文件

还在用右键新建文件吗?可以试试按 Alt + Insert,以后就可以直接在 Project window 中直接用键盘新建文件了。

但是如果你想在别的文件夹中创建文件怎么办呢?打开 Project window 再故计重施?其实,可以按 Alt + Home 切换到导航栏上,然后再选择文件夹,按 Alt + Insert 即可。

关闭 Navigation Bar 之后,按 Alt + Home 可以在光标附近呼出导航栏,不用每次都看屏幕上端。

Scratch File

可以按 Ctrl + Shift + Alt + Insert 新建 Scratch File,新建的 Scratch File 不会和当前的项目有任何关联。

参数提示

Java 没有命名参数,所以看代码的时候和参数对应上可能有点困难,除了按 Ctrl + P 查看参数信息,现在 IntelliJ 也会自动地在代码中加入参数信息,你也可以在设置中关闭它。

模板补全

写了 bufferedReader 才发现要写的是 if (bufferedReader != null) 怎么办,输入 “notnull” 即可。

同样地,要写 main 函数,可以输入 psvm 后回车。

Hipper Completion

IntelliJ 也可以从已经输入的内容自动补全,这称为“Hipper Completion”。按 Alt + / 即可补全,如果你已经输入了部分内容,会以输入了的部分作为前缀来筛选补全部分。

不只是在字符串字面量里面能用,其它任何地方也能够使用。

Language Injection

虽然项目一般都会是一种语言(比如 Java),但也有会在项目中包含其它语言的时候(比如 JSON),这个时候可以使用 IntellJ 的 Language Injection 功能,告诉 IDE 这是什么语言,方便 IDE 提示。

比如,要在一个字符串中撰写 JSON,可以在该字符串 Alt + Enter,选择 Inject language or reference。

选择好语言后,会问你需要是否注入一个注解。个人感觉没多大用。

Inject language 后,这个字符串就具备了自动提示错误的功能,另外也具有可以编辑的功能。再次 Alt + Enter,选择 Edit JSON Fragment,就可以在新打开的窗口中编写 JSON 代码,不需要担心转义字符的问题。

而对于正则表达式,还可以选择 “Check Regexp”,对正则表达式进行测试。

重构

对于非常简单的重构,可以使用 IntelliJ 的 Multiple cursor 功能:按下 Alt + Shift,使用鼠标选择光标位置,然后输入。

而对于普通甚至复杂的重构,可以按下 Ctrl + Alt + Shift + T 使用 IDE 的重构功能。

对于 Java 8 的 Lambda 表达式,IntelliJ 也提供了自动重写功能。但在执行之前,先确保自己对此有一定的了解。

结构化搜索/替换/代码检测

IntelliJ 的一个强大功能就是结构化搜索代码功能——你可以指定一定结构的代码,IDE 会帮你搜索类似的代码。在 Find Action 中输入 ”Search Structural“ 即可打开。

这里,你可以指定一定的变量(比如指定是多少行的语句)。指定完毕后按下 Find,就可以帮你查找出类似结构的代码。

结构化替换就是在结构化搜索的基础上对搜索到的代码进行替换,比如我们可以把整个 try 块都去掉。

而结构化代码检查是基于结构化搜索/替换配合 Inspection 的功能,可以在设置中的 Inspection 打开 ”Structural Search Inspection“,然后添加自己的结构化搜索/替换模板,这样 IDE 会自动检查类似结构的代码并发出警告。

如果添加的是替换的模板,按下 Alt + Enter 可以自动进行替换。

调试

Class Level Watch

可以在调试的时候按 Alt + F8 打开 Evaluate 窗口即时执行表达式,但是每次都要输入这个表达式。可以使用 Class Level Watch 来减少重复劳动。

Mark Object

对对象傻傻分不清楚?可以使用 Mark Object 功能给对象标注一下。

Quick List

可以在设置中的 Quick List 定义自己的操作,然后在 Keymap 中定义这个 Quick List 的快捷键,快速使用常用操作。

Productivity Guide

Help 中的 Productivity Guide 提供了更多的使用技巧信息,并且还提供了一些统计信息。

本文采用 CC BY-NC-SA 3.0 协议进行许可,在您遵循此协议的情况下,可以自由共享与演绎本文章。
本文链接:https://blog.codeingboy.me/intellj-idea-tips-and-tricks/

发表评论

电子邮件地址不会被公开。 必填项已用*标注