键盘与复利

本文主要描述键盘快捷键、Emacs keybindings和Vim mode等带来的效率提升,以及这些提升的意义。

友情声明:我不直接使用Emacs或Vim,我只是使用它们当中我知道和喜欢的部分。

零、前言

每次当你将手从键盘的主区域(广义的Home row keys)移动到方向键,或者改为使用鼠标来点击软件界面时,效率都有所下降。因为:

  1. 移动你的手需要时间;
  2. 移动你的手消耗了你大脑的注意力(判断手到了方向键、鼠标没有);
  3. 移动鼠标、判断鼠标光标是否到达需要的位置同样消耗你大脑的注意力;
  4. 用鼠标点击菜单,需要时间寻找菜单项,消耗了时间。

看到这,相信你也猜到了,本文正是要强调应该节约时间,减少注意力的消耗

一、键盘快捷键

最常见的键盘快捷键是(以Windows系统为例):

Ctrl + C : 复制
Ctrl + V : 粘贴

在复制一个文件时,使用Ctrl + C这比起“将手移动到鼠标,然后再去点击菜单”要快了至少6倍(假设按Ctrl + C需要0.3秒,而后者需要2秒)。

对于程序员来说,除了复制粘贴,还有如下常用的操作:

  • 将光标移动到行尾
  • 复制、删除光标所在的那一行代码
  • 跳到指定行号的那行
  • 切换窗口到上一个或者旁边的Tab
  • 切换到上一个app、指定的app
  • 将选定的一行或者多行代码注释掉
  • 启动构件(Build)
  • ...

时间消耗估算

按粗略估计,假设上述操作平均每次多消耗1秒,每分钟出现2次,一天实质工作6小时,那么一天就多消耗:

1秒 * 2 * 60 * 6 = 720 秒 = 12 分钟

那么一年下来就多消耗:

12分钟 * 22 * 12 = 3168 分钟 = 52.8 小时 ≈ 6.6 工作日

当然,相信大多数程序员或多或少也会记住和使用常见的快捷键,所以真实数据未必有上述估算那么触目惊心。

关于快捷键的建议

关于快捷键,我建议程序员们找到所使用的Editor、IDE或其他软件的快捷键表,逐个试一下,并且复习、练习那些常用但又一下子记不住的快捷键。

如:

  • IntelliJ IDEA Reference Card (注:当年我在Android Studio上花了2个小时试验这些快捷键)
  • Xcode Keyboard Shortcuts
  • Sublime Text Keyboard Shortcuts: Windows/Linux and OSX
  • Atom Keyboard Shortcuts
  • Mac keyboard shortcuts (注:强烈建议macOS用户看看)
  • ...

二、Emacs Keybindings

简单来说,就是使用Ctrl + P / N / B / F分别代替了方向键的上下左右——一下子为右手减少了至少12厘米的行程。

这在macOS中是默认开启的,即意味着所有Editor、IDE中甚至输入框控件中都可以使用。而Ubuntu Linux上则需要手工操作一下(详见:Emacs-like keybindings system-wide?)。至于Windows,我就没有研究过了。

当然,这当中还有其他一些有用的组合键:

按键 效果
Ctrl + A 移到行首(段首)
Ctrl + B 左移
Ctrl + D 向右删除
Ctrl + E 移到行尾(段尾)
Ctrl + F 右移
Ctrl + H 向左删除
Ctrl + K 向右删除至行尾(段尾)
Ctrl + N 下移
Ctrl + O 光标后插入新行(注:有别于回车)
Ctrl + P 上移
Ctrl + T 交换光标旁边的两个字符
Ctrl + V 类似Page Down
Ctrl + Y 粘贴先前由 Ctrl + K 删除的文本

(注:我没有学习过Emacs,只是知道上述组合键)

三、Vim Mode

小测试

请先自我测试一下,以下场景你是不是通过Home、End或者方向键等方式来实现的呢:

  1. 光标在行首,需要将其移动到第4个单词尾部
  2. 光标在行首,需要将其移动到第一个左小括号的位置之后,以便输入新文本
  3. 将光标移动到所在单词的下一次出现的位置(例如,在switch单词上,移动到下一个switch中)
  4. 想将当前行代码重复4次,以便作微小修改 (field1, field2, field3之类)
  5. 想删除3行代码

如果用Vim mode的话,很容易就达到了。按键分别如下:

  1. 3w e (3次按键)
  2. f ( a (3次按键)
  3. * (1次按键,无论两个单词间相隔多少行)
  4. yy 3p (4次按键,仅包含复制粘贴,未包含修改动作)
  5. 3dd (3次按键)

Vim mode的优点

它真正的优点,在你没有亲身体验之前,是很难向你言传的。只能概括如下:

对于同样的操作,它减少按键的次数、操作的时间,减少了大脑用于判断光标移动位置等的分神、消耗,最终大大地提高了效率。

如果你等不急的话,先看看这个教程中的动画演示吧:

  • 世界上最牛的编辑器: Vim 1 (原创动图演示所有例子!)

我的Vim mode之路

对于Vim mode,我颇有相见恨晚的感触。曲折经历如下:

  • 2001年学习Linux时学过Vim(或称Vi),当时只是记住了有Normal mode、Insert mode之类的区别、HJKL是使用光标的、退出时颇为麻烦;(听说有人为了退出Vim,不惜使用Ctrl+Z,然后kill掉Vim)
  • 2006年有同事给我演示GVim(Vim的Windows版本),当时也没觉得它有什么威力;
  • 直至2015年,有位老同事(真的“老”,他生于五十年代)在吃饭之余给我演示Chrome浏览器中如何使用Vimium这个插件做到看网页不用鼠标——正是这实实在在的演示打动了我,令我痛下决心去学习Vim mode——学习了之后才发现,不少Editor、IDE支持Vim mode。

Vim教程

鉴于我的经历,这里我也就给你搬运一下带有演示的Vim教程,希望它们能给你带来足够的震撼和学习动力:

  • 世界上最牛的编辑器: Vim 1 (原创动图演示所有例子!)
  • 世界上最牛的编辑器: Vim 2 (原创动图演示所有例子!)
  • 世界上最牛的编辑器: Vim 3 (原创动图演示所有例子!)

另外也推荐看看“酷壳 CoolShell”上的Vim系列文章。

支持Vim Mode的软件

很多软件都有支持Vim mode的插件,甚至原生支持,这也足见其实用程度:

  • Android Studio (基于IntelliJ IDEA)
  • Atom
  • IntelliJ IDEA系列 (PHPStorm, PyCharm, WebStorm等)
  • Sublime Text
  • Chrome插件: Vimium
  • Firefox 插件: Vimium-FF
  • ...

四、上述三者于复利的关系

复利是什么?简单来说,就是1.01的100次方就约等于37.78,即是:微小的增长随着时间的推移而累计,越到后面收益的增长越大,且呈指数式增长。

上文中仅仅是快捷键一项中的估算(强调:是估算),一年就可以节省6.6个工作日了,还没有算上Emacs Keybindings和Vim Mode呢。

如果这势头累计20年……不算下去了,不少人在讨论35岁的程序员何去何从呢。

参考(注,本文目的不是讨论投资、理财):

复利是什么,为什么爱因斯坦说它是宇宙最厉害的东西之一(复利应该属于投资理财)?

五、结语

工欲善其事,必先利其器——鉴于复利的效应,建议立志当个好程序员的朋友尽早实践本文的3点建议。

你可能感兴趣的:(键盘与复利)