IDEA without mouse

vimemacs 的圣战相信大家并不陌生。很多人对这两款编辑器爱不释手,有一个很大的原因是,它们通过多种插件和快捷键,可以完全脱离鼠标操作,并且效率更高。
但在平时工作中,相比 vimemacs,我始终认为好的 IDE 才是第一选择,因为 IDE 做好了各种功能的集成,节约了我们自己调教 vimemacs 的时间。
IDEA 是我心目中毫无疑问的最好 Java IDE(没有之一)。但平时观察发现,大多数同学使用 IDEA 时,在鼠标和键盘键频繁切换,效率不免大打折扣。因此总结了一些平时我对 IDEA 键盘操作的实践,以供大家参考,希望能有所帮助。
本文中涉及的快捷键基于 IDEA 的默认快捷键配置(Mac OS 10.5+)。

窗口和视图切换

以我个人的使用经验来说,最常用的视图和窗口切换的快捷键操作有:

  • 多个窗口间切换:⌘\ ⌘⇧` `
  • 多个编辑器间切换:顺序切换⌘⇧[⌘⇧],切换到上一个或下一个⌘[⌘],类似于⌘⇥ 的 switcher⌃⇥
  • project 视图:⌘1
  • debug 视图:⌘5(run 为 ⌘4,但相对不如 debug 常用)
  • 版本控制视图:⌘9
  • 焦点由视图返回编辑器:
  • 打开其他常用视图:⌘⇧E⌃⇥

以上这些操作,基本可以概括 90% 以上的使用场景,完全避免鼠标操作。
另外要单独一提的是,大多数 IDEA 中不能输入的视图、弹出框等场景下,可以通过直接键入内容进行搜索,用上下箭头选择确认。如在 project 视图中,可以通过这个操作,快速定位到某个文件夹。

打开文件

强烈推荐的两种打开文件方式

  • 打开类:⌘O
  • 打开所有类型的文件:⌘⇧O

打开 Java 文件时强烈建议仅使用⌘O,这将极大的减少筛选文件的范围,尤其是在项目中有大量配置文件的情况下。

不建议使用双击(打开 search anywhere),一方面可能和第三方中文输入法中英文切换键冲突;另一方面搜索范围太广,筛选不如上面两种方式高效,默认情况下 ⌘O⌘⇧O 只搜索项目代码内的文件,当项目内匹配不到关键字或再次按下相同的快捷键时,搜索范围才会扩大到引用的包。

此外,⌘⇧E 可以打开弹框,可以很方便的选择最近编辑过的文件。

对于 Java,IDEA 提供了完整的文件间导航

  • 调用和定义间跳转:⌘B
  • 从声明跳转到实现:⌘⌥B
  • 跳转到父类/方法:⌘U

编辑器操作

编辑器中的光标定位

最广为人知的方法就是通过查找定位:

  1. 编辑器中通过 ⌘F 唤出搜索框
  2. 键入关键字,按上下箭头定位到目标位置
  3. 退出搜索,光标定位到关键词末尾

下面介绍几种同样很实用的定位方式。

通过结构定位

几乎所有常用的文件格式都可以通过这种方式定位,包括不限于 JavaXMLpropertiesHTML/JavaScript/CSS
通过⌘F12,唤出当前编辑状态的文件结构。通过搜索可以快速定义到 Java/Javascript 的方法和属性,XML/properties/HTML/CSS 的节点。

通过行号定位

试想以下场景:查看生产环境日志中打印了一个错误信息,显示 *ErrorClassName * 类的 veryLongMethodName 方法抛出了一个异常,具体行数是 300
怎么样最快的定位到代码的这个位置呢?首先通过⌘O打开类,这一步应该没什么疑问。接下来怎么做呢?通过⌘F或者⌘F12找到这个方法吗?如果方法名前缀重复较多不利于索引筛选,或者方法体过长,定位到最终目标都要废很大劲。

我推荐的做法是,定位到类后,通过 ⌘L 直接输入行号进行定位。在某些知道列号的场景下,输入 行号 列号 还可以直接将光标定位到更准确的位置(按提示可使用 行号:列号 ,但冒号显然不如空格输入方便)。

精准定位

当我们通过以上的一种或几种方式,将期望的光标位置放到了可视区域中,多数同学可能会通过鼠标直接点击或者箭头移动。但既然我们的目标是抛弃鼠标的同时进行高效操作,这些方法当然不能够满足。

这里推荐插件AceJump。它实现了类似emacs 的 Ace-Jump-Mode。大致步骤如下:

  • ⌃; 进入 AceJump 模式,光标当前位置会出现高亮。
  • 输入要定位的文本。在依次键入的过程中,匹配当前键入的位置会有高亮并且显示相应 tag
  • 键入 tag 的内容光标定位到该 tag 位置。

如当前可视区域中,我想将光标移动到「varName」前,首先进入 AceJump 模式,然后依次键入「varName」。理想情况下,键入 v 后,由于命中数量较少,tag 为单个字符,此时再键入该 tag,就完成了一次定位。相比方向键移动,效率提升很多。

使用时有三点需要注意:

  1. AceJump 支持全文索引,但跳转到可视范围外需要的操作相对繁琐,因此建议使用上述的其他方式先移动到可视区域。
  2. 同样是基于以上理由,如果硬件配置不够好,在大文件中(如文件有上千行时)不推荐使用。
  3. 由于光标默认移到关键词前,所以想要定位准确,最好用目标位置后的内容作为关键词。
模糊定位

假设一时间还没办法习惯这些定位技巧,仍然习惯用方向键定位,不妨试试这样操作:

  • & 快速地上下移动光标( mac 原生键盘使用 fn↑ & fn↓
  • ⌥← & ⌥→ 快速地左右移动光标

编辑文件

介绍完窗口、视图、文件的导航,接下来的重头戏就是内容编辑了。所有平台通用的复制粘贴就不再赘述了。下面介绍一些我认为较为常用的往往被大家忽视的、可以替换鼠标操作的编辑快捷键。

  • 弹出提示:⌘↩最实用的快捷键之一,尤其当有错误或警告时可以按照 IDEA 的建议进行快速修改(当然 IDEA 的建议不一定是对的)。
  • 生成代码:⌘N最实用的快捷键之一,快速生成构造函数、Getter/Setter、toString() 方法(代替这三者我认为更好的方案是 lombok)接口实现、单元测试等通用的代码片段。
  • 选中整个单词:⌥↑,代替双击单词(实际上是选中上一级文字,选中单词后再次使用会选中语句,再次使用会选中更上一级代码块,以此类推)。
  • 注释/取消注释:⌘/
  • 复制整行:⌘D
  • 删除整行:⌘⌫
  • 上 / 下移整行:⌥⇧↑⌥⇧↓
  • 格式化内容:⌥⌘L

运行调试

照例介绍几个最常用的快捷键:

  • 切换 Run Configuration:⌥⌃D
  • 启动运行:⌃R
  • 启动调试:⌃D
  • 停止运行 / 调试:⌘F12
  • 添加 / 删除当前行的断点:⌘F8。小心不要误操作在方法上加上断点,旧版的 IDEA 中,方法断点会非常消耗性能。
  • 到下一断点:⌥⌘R
  • 单步:F8
  • 步入:F7,如果当前行有多个方法调用,会按执行顺序进入方法内部,通常需要搭配跳出 ⇧F8 使用。

版本控制

同样,以 Git 为例,80% 的操作可以通过下面几个快捷键完成。

  • pull: ⌘T。要注意的是在 Git 下只会从当前本地分支关联的远程分支拉取
  • commit: ⌘K。遗憾的是,默认的 commit 行为会提交整个 changelist,要提交单个文件还得自己手选。
  • push: ⌘⇧K

以上当然只是 CMS 操作中极少的一部分。但考虑到 coding 中对 CMS 的操作明显不如其他操作高频,另一方面我们也可以在设置中对自己常用的操作设置新的快捷键,这里

小结

以上是我在工作中最常用到的快捷键。作为一篇入门教程,所列举的这些快捷键并不全面。毕竟最佳的实践方案,是根据自己的使用习惯,在 Setting > Keymap 中设置自己最常用、最顺手的快捷键组合。

最后留几个默认的快捷键给感兴趣的同学尝试。

  • ⌥F1
  • ⌘⇧U
  • ⌘⌥⇧[ & ⌘⌥⇧]
  • ⌘Y

你可能感兴趣的:(IDEA without mouse)