V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linesh
V2EX  ›  程序员

[福利] 成吨提高开发效率: Intellij Shortcuts 精简子集与思维模式

  •  1
     
  •   linesh ·
    linesh-simplicity · 2016-07-20 22:05:49 +08:00 · 3255 次点击
    这是一个创建于 2830 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在线精简 cheatsheet 备查表:intellij.linesh.tw
    Github 项目:intellij-mac-frequent-keymap
    全文完整链接:成吨提高开发效率: Intellij Shortcuts 精简子集与思维模式

    Intellij 的快捷键多而繁杂,从官方推荐的 keymap,到网络上很多的个人总结,资料可谓浩如烟海。相反,如何从众多的快捷键中快速找到使用频率最高、对工作效率提升最多的快捷键,则成为一个难题。这个 cheatsheet 速查表,正是为了解决 Intellij 快捷键学习过程可能遇到的这个问题。

    这一年里我拉拉杂杂地阅读了许多 Intellij 快捷键与使用理念的资料,不管是官方的 keymap 还是个人的博客,结合平时的工作和个人项目经验,我尝试整理并总结其中最精华的部分,同时通过这个子集来总结、思考与提高效率相关的思维模式和理念。分享出来,希望能顺便给学海中的同学提供有益的帮助。

    目标读者和人群

    • 想要快速上手 Intellij 快捷键的同学。多而没有重点的其他资料不用看了,优先学习最精华最常用的快捷键,才是节省时间,提高效率之道
    • 想要不断对比、精简你的快捷键集合的同学。毕竟快键辣么多,记得最有用的就好
    • 备查。这个是最主要的目的,存个书签或者记个网址,需要的时候只要有网络,随时跨平台可查
    • 尝试提高思维层级,从理念和思维模式的视角来看待编程和工具的同学

    理念与思维模式

    IDE 与电脑作为工具,永远是高效完成特定工作的辅助。因此我们所谓的高效有了上下文:以完成工作为主,在这个过程工具的作用是辅助工作。那么,所谓高效也即是问,如何更专注于工作本身,更高效地完成工作呢?在一系列落地的快捷键背后,这个围绕快捷键所展开的工作系统,其实质性提高工作效率的理念和思维模式本身是什么呢?我的回答是:

    • 更高层次的抽象
    • 声明式使用

    更高层次的抽象

    更高层次的抽象,指的是从代码、从语言本身特性的层面思考编程,而非单纯的文本或者字符串。要把思维从“把这五行代码剪切并复制到一个新的方法里”等把代码当成无意义字符的低层面活动,转变到以作为语言核心的要素和特性为单位的思考,比如类、变量、方法、重命名、重构、 if-else 、循环、可循环元素等。

    在这方面, IDE 提供的 Live Template、**重构(Refactoring)**、部分后向声明等,都是这种思想的产物,允许你从更高的层级(语言特性、与 Java 高相关的重构)来思考代码,并尽量多地向上屏蔽细节。

    声明式使用

    声明式使用,指的是直接使用你完成工作所需要的元素(类、字段、方法等),让 IDE 为你自动补全缺少的声明或定义。这种思想同样贯穿这本工具集的始终,以更语义化(更高阶)的操作来使用工具。

    在这方面, IDE 提供的 后向声明(Postfix Auto Completion)自动补全(Auto Completion) 等,都是这种思想的产物。你不需要关注操作所在的上下文, IDE 会为你补全,你需要关注的是工作和操作本身。

    本 cheatsheet 如何通用?

    像这种 cheatsheet 的记录,有可能会随时间或版本变迁而不再通用,过多的定制也可能使得追踪和维护成本增加。为了尽可能多地减少维护成本,尽可能长地保持这份 cheatsheet 的有效性,下列快捷键的选取遵循以下几个原则:

    • 仅列出 Mac 版的快捷键
    • 统一使用 Mac OSX 10.5+版本的 keymap 作为基准
    • 原则上对作为基准的 keymap 只删不改,即可能删除不需要的快捷键,但非特殊原因则不会更改已默认启用的快捷键
    • 少部分确实需要更改的快捷键,我会采用*星号标明,并标明原因

    快捷键精简子集

    本章主要分七个部分展开总结:生产力大杀器、语言要素生成、编辑、导航、重构、搜索、运行时。版本控制的部分未录入,原因是我倾向于使用命令行提交,而非 IDE 内置 VCS 支持。见仁见智。最后一栏是该操作在 IDEA 中的操作名称,可以在 keymap 中检索对应的 action/shortcut 找到。

    后面快捷键部分,V2不支持markdown的表格语法,因此全文只能请大家到下面链接去看,全文目录附上。如果只是想要收藏一个精简的cheatsheet,这里也附上链接。Github点赞是必须的。

    在线精简 cheatsheet 备查表:intellij.linesh.tw
    Github 项目:intellij-mac-frequent-keymap
    全文完整链接:成吨提高开发效率: Intellij Shortcuts 精简子集与思维模式

    9 条回复    2016-07-21 20:59:56 +08:00
    chhx
        1
    chhx  
       2016-07-20 22:22:46 +08:00
    赞!有 windows 版本的就更好了
    RanchoH
        2
    RanchoH  
       2016-07-20 23:26:15 +08:00
    希望能有 Windows 版本!
    jsxqf
        3
    jsxqf  
       2016-07-21 09:41:33 +08:00
    赞一个!👍
    linhua
        4
    linhua  
       2016-07-21 10:55:23 +08:00   ❤️ 1
    直接使用 vim 的操作方式 , 感觉这样 体验更统一
    https://github.com/goreliu/vimdesktop
    sqbing
        5
    sqbing  
       2016-07-21 16:45:48 +08:00
    很多快捷键都是被慢慢试出来的,不过这样子反而记得很清楚
    linesh
        6
    linesh  
    OP
       2016-07-21 20:49:52 +08:00
    @chhx @RanchoH @jsxqf 谢谢支持

    我还想加个新功能,统计一下每个快捷键被使用的频率百分比,一起放到主页上 http://intellij.linesh.tw
    linesh
        7
    linesh  
    OP
       2016-07-21 20:51:05 +08:00
    @sqbing 是丫,尤其是还有 Key Promoter 这种插件。
    linesh
        8
    linesh  
    OP
       2016-07-21 20:55:57 +08:00
    @RanchoH Windows 版本其实我还在纠结…因为感觉会让整个页面内容变多,可能会分散读者的注意力。今天在想,能不能自动检测来访者的 http header ,看是 mac 还是 linux/windows ,不过又想,总不能人家来访是 windows 你就不让人家查 mac 啊。所以我还在继续纠结中
    linesh
        9
    linesh  
    OP
       2016-07-21 20:59:56 +08:00
    @linhua 层主你好,这个强行安利我给 92 分,剩下 8 分以 233 的形式送出。

    已点赞支持,哈哈哈。

    其实虽然一直知道 IDEA 有 vim 插件,但是我一直没用(因为我 vim 不好我会乱说),原因之一是我觉得,它们负责的层面是不同的。 Vim 在做文本编辑的时候很强悍,但也如我在文章所说,写代码时我们其实是在编程语言这个层面思考问题的,这个时候显然不适合把代码当作一般的文本来看待,而是需要 IDE 这种更高一级,在代码的语意上提供快捷键支持的工具来搞定。

    个人想法,我个人 vim 不是很熟。有兴趣的同学跟帖讨论?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1005 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:54 · PVG 06:54 · LAX 15:54 · JFK 18:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.