Posts published during January, 2011

一年前, 我在博客上陆续写了好几篇”完全用命令行工作“的文章. 这些文章介绍了一些我平时用的的基于命令行或纯键盘的工具和命令. 而之所以强调纯键盘(不用鼠标), 是因为我发现拔掉鼠标纯用键盘, 能大幅度的提高工作效率. 这也是我写这个系列的初衷.

其实, 命令行的, 或者支持键盘工作的程序层出不穷,如果做个有心人, 每周几乎都能发现新的甩掉鼠标提高效率的工具。比如说,这一年中我就发现了如 keynav 这样使用纯键盘和二分法定位屏幕的程序,更多的支持 vim 键位的各种浏览器, 编辑器插件. 所有的这些工具, 用起来都非常酷(事实上不用鼠标本身就很酷). 因此,单从好用的工具来讲,”完全用命令行工作” 这个系列每月都可以写一篇. 一年过去了, 随着我更多的使用纯键盘工作, 我发现, 其实和用什么工具没多大关系, 掌握了一个基本原则之后, 那些工具顺手就可以找到.

什么是我想说的基本原则呢? 时隔一年, 我觉得可以总结成一句话: 鼠标更加容易分散注意力, 且输入带宽没有键盘大.

为什么说鼠标分散注意力呢?  我在“拔掉你的鼠标” 这篇文章中有过说明: 鼠标在屏幕上不受我们注意力的边界约束, 很容易使我们的注意力分散到各种地方, 成为工作效率的敌人。如果用时间管理眼光来看, 鼠标甚至可以说是时间管理的敌人 – 鼠标可以让你随时用一个窗口跳到另一个窗口, 一个关注点跳到另一个关注点, 使得你的时间规划失去效果.  我发现拔掉鼠标之后,上网不会乱点,无聊的时候不会点着好友的头像开始聊天,或者没事整磁盘碎片等等。拔掉鼠标的目的, 是为了提升工作效率. 当然我也知道, 拔掉鼠标是属于治标不治本的一种办法, 好在大部分浪费时间的应用都依赖于鼠标, 拔掉鼠标后想浪费时间也无从下手了. 所以在短时间之内的确算是一个提高效率的有效方法.

当然, 真正会把握自己时间的人, 是不会像上面提到的那样因为鼠标而分散注意力的. 即便这样, 鼠标也不见得有键盘好用. 用理论上来说, 鼠标这个“信息通道” 的带宽太小了,相比较于键盘, 鼠标向计算机传输同样的信息可能要花费更多的时间. 一个最简单的例子就是快捷键. 键盘快捷键不光比用鼠标在多级菜单中点来点去快, 甚至也比移动鼠标单击一个图标快. 究其原因, 还是因为鼠标操作图形界面是一种间接的给计算机发指令, 而用键盘快捷键相对直接一点. 只有在移动焦点和点击选择定位位置的时候, 鼠标才比键盘高效.

这一年, 我发现虽然还不能 100% 的抛弃鼠标, 但可以说 95% 的情况下, 鼠标的使用都是可以避免的. 具体来说, 包括以下几处.

第一, 消除浏览和寻找文件时对鼠标的使用, 用搜索来定位文件. 用鼠标定位文件的时候, 一般人会一层一层的打开文件夹直到找到所需的文件. 实际上, 应该使用桌面搜索(苹果自带) 去管理这些文件, 从而不需要用鼠标去点击文件夹. 除了桌面搜索, Quicksilver/Alfred 这样的启动器, 和命令行等等, 都可以节省在浏览文件上所耗费的鼠标点击和时间. 命令行也是一个大宝库, 很多时候, cp/mv 比拖放文件夹快多了.

第二, 消除窗口管理中对鼠标的使用, 用键盘快捷键代替鼠标点击按钮. 在多任务图形界面操作系统里, 我们常常需要移动, 最大最小化, 或者切换窗口. 如果有兴趣, 还可以尝试一下 Awesome 这样的平铺窗口管理器.

第三, 消除应用程序对鼠标的依赖, 使用快捷键. 几乎任何一个复杂一点的应用程序, 如 Firefox, Photoshop 或 Office , 都会提供一整套的快捷键方案. 相比较于用鼠标反复选择点击菜单项, 熟悉快捷键的人完全可以运指如飞, 手不离开键盘完成所有操作. 这也包括 vimperator 等让 Firefox 焕发第二春的杀手级插件.

当然, 我们用了好多年养成了用鼠标代替键盘的习惯,是不可能在一夜之间改回头的。如果你是一个用习惯了鼠标的人, 现在想要从鼠标转移到全键盘, 不要期望一会儿就能扔掉鼠标. 这个过程可能会持续几个月. 如果你上面的每一条都做到了, 就正儿八经拔掉鼠标, 工作个一星期. 几星期之后, 你会发现更多的快捷键, 更多的命令行工具, 写更多的脚本完成原来需要鼠标完成的事情. 到时候, 那就真的是 the world is your oyster 了. 你会发现, 原来计算机用起来是这么的爽, 而且再也不要担心腕关节受损了.

各位读者新年好.  今年, 博文准备将我博客上现有的的编程珠玑番外篇系列, 以及我将要写的该系列的一些文章结册出版. 这个系列能写到现在, 都要感谢各位读者的捧场和传播, 以及在留言中给出的那些意见和建议. 当然, 我继续需要各位读者更多的意见和建议.

在写作该系列的时候, 我心里大致有个写作的框架和轮廓. 在和博文沟通中, 郑晖老师, 博文视点的周老师和卢编辑, 还有其他业内高手等也都给过我不少的建议, 对我帮助非常大. 目前, 我依然在两个方面需要各位读者的意见. 具体来说:

第一, 我希望知道读者的背景和对文章深度的期待. 在写这个系列的一开始, 我是以有趣的八卦的角度来写的, 文章的篇幅也不长, 用邓晖老师的话说, “致使有些问题无法充分展开”. 加上本人学识也有限, 写太深了我自己也驾驭不了, 写太浅了又会让人觉得是浮光掠影骗人钱财, 因此我想听听读者对这个系列的文章的深度和广度的期待. 同时,  我对读者的定位是: 觉得看完了一些编程的书还意犹未尽, 很好奇并觉得计算机科学和编程有趣的人 [按 Dreyfus 分类 , 读者的水平应该是在新手(Novice)  之上, 高手(Expert) 之下的 Advanced Beginner 和 Competent 层次]. 因此, 我还想了解下读者的技术背景.  我把自己想象为一个看完了”编程珠玑”之后手不释卷, 感觉意犹未尽因此狗尾续貂的人, 因此定位是”以计算机科学和编程教科书之外的有趣, 有用的知识为主题的系列文章”。 您的意见将帮助我和出版社的编辑们处理书稿的时候, 在内容的深度和广度, 主线和八卦之间达到一种较好的平衡.

第二, 我希望有技术上的高手对我文章中无论大小的瑕疵提出猛烈的批评. 博客上的技术文章一旦要成书, 标准完全不可同日而语. 我也深切的感觉到自己在有些技术问题上的理解的不深刻. 质量达到 Knuth 大牛那样出书后给找到 Bug 的人发支票是不可能的, 但事先尽可能的找到 Bug 让书稿质量更加好还是值得追求的. 同时, 我会在书中致谢所有在成书过程中给与我帮助的人.

你可以在这里留言, 也可以在推特上 @mathena.

蒙博文的卢编辑推荐, 本文在写作时参考了 vgod 的写书计划.