之前曾和朋友讨论,为什么很多程序员舍得买千元价位的键盘,却很少愿意买个同级别的鼠标……最后一致认为原因在于代码是键盘敲出来的,不是鼠标点出来的。如果以后编程简化到拖拽下控件就搞定,那价值天平恐怕就能向鼠标倾斜了。
在开始尝试键盘流编程前,需要达成一个共识──
不依赖鼠标的编程,不仅很酷,更重要的是非常高效。
以 Java 编程来说,我使用的软硬件是 MacBook Pro、IntelliJ IDEA、Vim。脱离鼠标编程的关键在于──
- 熟悉代码定位的快捷键,包括目标文件的打开,方法定义/实现的跳转等;
- 熟悉文档操作的快捷键,复制粘贴是最最基础的,复杂高阶的甚至可以是宏操作;
纯熟的掌握以上两个技能,基本可以实现不依赖鼠标,双手不离开键盘地进行编程了。而 MacBook + IntelliJ IDEA + Vim 的组合工具最大化的降低了上述两点的习得门槛。为什么下这样的结论,其一,macOS 常用的组合键是 Command
键,这样就释放了大量潜在的以 Control
键为基础的快捷键,此外 macOS 支持 Emacs 的光标移动快捷键,这非常高效;其二,IntelliJ IDEA 是最棒的 Java IDE 没有之一,它的快捷键也是最出色的;其三,Vim 是久经考验的编辑器之神。
吹工具的话到此为止,下面就具体写写怎么用这些工具实现键盘流编程。
IDEA 本身并不支持 Vim 操作,需要安装一个堪称神器的插件 IdeaVim,几乎可以说是模拟 Vim 最好的一个插件了。IDEA 的完善快捷键加上 Vim 强大的文本编辑能力,多加练习就完全可以脱离对鼠标的依赖。
先来看 IDEA 自带的快捷键,哪些能带来强大的生产力。
IDEA 键盘流
快速定位文档
IDEA 通过连续点击两次 Shift
键可以打开全局文件查找和最近访问文件查找;
在文件查找框中输入 /
+ 文件夹名,可以定位到文件夹所在位置;
通过 Command
+ E
打开最近访问文件的查找框;
通过 Command
+ Shift
+ O
查找文档名,精确定位文档;
在选择文档时,你根本不需要移动鼠标去点击,扔掉鼠标,试着用 Ctrl
+ N
(P
, F
, B
) 来对光标进行向下、向上、向前和向后移动。
快速打开工具
IDEA 内置了很多有用的工具和优化动作,比如 Console、 Rest Client、智能优化 import 和填充 Getter Setter 等,如果用鼠标去找再去一个个点真的很费劲,可以通过 IDEA 的全局动作搜索功能进行查找,快捷键是 Command
+ Shift
+ A
,在搜索框中输入工具或动作的关键字就能定位到,自己尝试下吧,非常强大!
全局查找修改
有时候需要全局的查找关键字和修改,Command
+ Shift
+ F
全文搜索,更强大的是,IDEA 支持对文件名/变量名重命名而不影响引用关系,试试 Shift
+ F6
吧。
IdeaVim 键盘流
对 Vim 熟悉的开发者,很多都会在其他编辑器和 IDE 中引入 Vim 的编辑模式,因为 Vim 实在是太好用了,我的理解是,Vim 其实不只是一款编辑器,它更是一种编辑的思想,及时脱离了 Vim 编辑器本身,很多 Vim 爱好者也会习惯于并认同使用 h
、 j
、 k
、 l
键移动光标。
在 IntelliJ IDEA 中启用 Vim 模式后,会有一些快捷键冲突,主要是内置的几个 Ctrl
快捷键和 Vim 模式冲突,但冲突的键不多也很好解决,这个我在之前的博客中已经提供了参考方案。
Vim 的学习曲线有点陡,很多快捷键的记忆并不很直观,关于 Vim 操作的介绍可以写一本书,我掌握的水平也就是小半瓶水,但已经足够我在文本编辑时体会到快速和便利了。下面说几个操作抛砖引玉吧。
光标的快速移动
在文件中如果要快速移动光标,大多数人会觉得用鼠标肯定打打快过键盘啊,毕竟鼠标指哪打哪。但写代码和浏览网页不同的地方在于,写代码时要定位一个位置往往是有目的性的,比如我就想跳转到某一行,我就想跳转到方法的结尾,类似这样的场景,鼠标其实不太好用,因为我还得要用眼睛去找,再移动鼠标去点击到那个位置,看似快实则慢。Vim 的话就会非常方便,比如我想让光标往下移动 12 行,就是通过敲键盘数字 12 和 j
键;gg
跳转到文件首行,G
跳转到文件末行;数字 n + G
跳转到第 n 行;%
跳转到当前括号的另一半对应位置……还有很多非常使用编程常用操作,不一一举例了。
Vim 的复制/剪切/粘贴也很方便,关键在于习惯 Vim 模式,脱离使用了多年的 Ctrl
+ C
。键盘流编程并不难,至少我在使用 IDEA + Vim 并主观的尽量不用鼠标一段时间后,能明显感到编码更顺畅了,双手不用离开键盘确实能带来非常好的 Coding 体验,值得为此努力尝试。