推荐个人常用的几个键盘流的plugin和技巧:
1. IdeaVim 插件
Intellj的Vim模拟是我所用过的IDE中最接近完美的了,不用实在可惜。从完全不会Vim到基本可以使用Vim键位来进行日常开发也就两三个星期的事。好处也很多,首先Vim的操作方式速度确实很快,其次可以解放出大量ctrl和复合键位来做其他用途(这一点emacs的键位模拟就做不到,还会经常和IDE本身的热键冲突),再者现在大部分主流编辑器或IDE都有Vim模拟器,使用一套键位在各种环境下都能进行常用的操作。
2. emacsIDEAs插件
不要被名字唬住了,其实这个插件跟emacs关系不大,只是实现了emacs里的AceJump功能(但个人感觉比另一个AceJump插件好用)。如果你看插件的说明的话,它还围绕AceJump实现了一些其他功能,但已经有了IdeaVim的话这些就没必要用了,只使用它的AceJump就行了。
所谓AceJump,就是你按快捷键进入AceJump模式后(默认是Ctrl+J),再按任一个字符,插件就会在屏幕中这个字符的所有出现位置都打上标签,你只要再按一下标签的字符,就能把光标移到该位置上。换言之,你要移动光标时,眼睛一直看着目标位置就行了,根本不用管光标的当前位置,非常舒服。
3. Shortcut Translator插件
如果你是从其他IDE(比如Eclipse)转过来的,可以用这个插件查询在其他IDE中某个热键所对应的IDEA热键。
4. 善用Select Word at Caret功能(Ctrl+w)
在IDEA的Keymap中有Select Word at Caret这个动作,字面意思是“选中光标所在的单词” ( 2015/07/22 更新:在14版中已改名为 Extend Selection ),默认快捷键是Ctrl+W。但事实上,这个动作的实际操作是选中更上一层的语法结构。例如,如果你在一个字符串的一个单词中,按一下Ctrl+W,会选中光标所在单词。再按一下,会选中整个字符串的内容,不包括引号。再按一下,会选中包括引号的字符串。再按一下,会选中整个表达式(如果表达式含有括号,会逐层选中)。再按一下,会选中整个语句块。再按一下,会选中整个方法。再按一下,会选中整个类。
如果没有用IdeaVim,这个功能是非常强大的(完美替代鼠标双击和shift+右键选中)。如果使用了IdeaVim的话,用Vim自带的Text Object功能就能实现大部分选择语法结构场景。但有一些Text Object在IdeaVim中没有实现,比如说选中花括号(非block)中的内容( vi{ ),或者选中xml标签之间的内容 ( vit )。这时用Ctrl+w也很方便。
5. 善用Postfix Completion
简单来说就是你可以先输入语句的主体(例如要赋值的表达式,或者要循环的集合变量),然后输入用小数点分隔的模板名称后缀,IDE自动帮你智能展开。
比如说,你想写
for (User user:users) { ... }
只需要输入 users.for 再按tab就行了
你想写
Date birthday = user.getBirthday()
只需要输入 user.getBirthday().var 再按tab就行了。IDEA会自动推断赋值类型和生成默认的变量名称。
仅针对Mac用户,补充一条增加快捷键的方案,全系统有效。个人觉得效率非常高。
这套方案的好处是:
1. 增加了490多个与常用快捷键不冲突的快捷键组合(如果需要可以自己增加至700个),供重定义。换而言之,你不需要改动本来的快捷键布局,同事来你的机器上协助编程时不会找不着北。
2. 绝大部分新增的快捷键都在基键上,且减少了对功能键的需要,极大提高小尾指的幸福感。
3. 绝大部分快捷键组合带有方向和轻中重的含义,便于记忆。
4. 可针对不同应用定义不同的方案。
1. 全局定义 (在Intellij外也才有此设定)
(sio):光标左移
此外,引用答案中的配置文件本来就配置了以下解放小尾指的全局配置:
2. (df+动作键),(ds+动作键),(fd+动作键) 组合为输入常用关键字 (是的我就是这么懒,按头几个字母再按一下TAB都觉得烦。。。)
3. 左手方向键 + 右手双动作齐按 (前面已定义方向加io齐按为全局方向,这里不再重复定义)
3. 两右手相反方向加一动作
4. sd+动作 代码重构相关
5. se + 动作 打开代码相关