![a49211949329455f66a69494d46c47a0.png](https://i-blog.csdnimg.cn/blog_migrate/a523ab0783c30bd6cebb39c76b2c9581.jpeg)
We are typists first, and programmers second. It’s very difficult for me to take another programmer seriously when I see them using the hunt and peck typing techniques. – Jeff Atwood
你首先是个键盘侠,其次才是程序员。
曾经的二指禅
程序员的你是否还不能盲打?以我目前的观察,很多程序员还是没法完全盲打的。即使可以盲打, 数字区域还有一些边角也非常容易出错。
回想我大一开始学习c语言编程的时候,使用的还是 vc6.0,用的谭浩强的红皮书(不得不吐槽一下这本书,一堆错误,代码风格也不好)。 那个时候盲打还不太熟悉,高中之前主要学习课本知识,对于编程的了解几乎没有,使用电脑也只是聊天打个网游。 大一打字的时候基本还是边看键盘边敲字符,英文打字速度比较慢。到今天已经可以在终端下使用 vim 纯键盘编程,甚至浏览器也可以不用鼠标,进步还是比较大的。
PegasusWang:完全不用鼠标写代码!你信么?[视频]zhuanlan.zhihu.com![18d6faa237e5e4c5df2c2a052190cfc5.png](https://i-blog.csdnimg.cn/blog_migrate/c06cb48b7e7814b7f323c66ef7a21b56.jpeg)
Vim 从入门到放弃
第一次知道 vim 是大学学习 Linux 操作系统的时候,当时对于代码编辑器还没啥概念。之前折腾过vc6.0/visual studio/QTCreator/Devc++/Eclipse 等,此时 JB 全家桶甚至 Sublime/Atom/Vscode 之类还没开始大规模流行(大概是15年以后流行的,当时前端大部分人用sublime), 那个时候用 Eclipse 的是最多的,如今似乎已经没落,赶不上风头正劲的 vscode 和 JB 全家桶。
大学只是对 vim 有基本的了解,会服务器改改东西。后来因为做后端干脆直接从 windows 换了 ubuntu,面试的时候老是被问到各种命令行,后来就又一直用了 mac。 vim 给人的第一感觉绝对是难用,很多人都不知道如何退出,所以我也没有深究,现成的 IDE 何必去折腾。
重拾 Vim
重拾 vim 是我第一份工作实习,在一家创业公司,当时万众创业正火,笔者就在中关村创业大街一栋楼工作。因为各种乱七八糟的环境问题,同事都是在服务器上开发。我一开始用的 Pycharm,无奈发现每天都要本地修改然后拉到服务器上自测,频繁修改代码的时候感觉十分繁琐,当时还没有编辑器很好支持远程开发,有跳板机又更麻烦了。 无奈又重新捡起来 vim,发现之前网上看的教程都太老了,看到同事使用炫酷的插件感觉很新奇,就慢慢学会了,当然经过了大量的学习和实践。
学习 vim 的过程主要是肌肉记忆,一开始还是比较痛苦的,但是熟悉了一段时间后发现居然可以不用鼠标编程,还是挺爽的。 不得不说氛围真的对人有很大影响,如果不是同事影响也不会去用 vim 吧。
用 vim 的好处可能就是 vim 已经经受住了时间的考验,将近30年的软件了还在一直与时俱进(vim8/neovim 等)。很多编辑器/IDE 都昙花一现渐渐没落了。之前工作的一段时间旁边有个前端哥们,不到一年的时间从 Sublime -> Atom -> Vscode, 看似没啥学习成本,但是似乎每个编辑器都没能很好的掌握,而我的 vim 确用的越来越溜,以至于现在无鼠标写代码,写文档,写博客,写笔记。
玩转Vim 从放弃到爱不释手-Vim入门-慕课网www.imooc.com![8762dbfda50eb95e986516864605a625.png](https://i-blog.csdnimg.cn/blog_migrate/4fbf855d61964f9deff37d59a57cc9d2.jpeg)
编辑器的选择
实际上这是一个非常引战的话题,不光是编辑器,甚至编辑器和 IDE的选择。怎么说呢,各有场景吧,比如笔者平常写的语言比较多,python/golang/cpp 等,各种环境切换实在不爽,我个人更喜欢一个编辑器+多语言插件,微软搞出来 LSP (language server protocol) 我觉得是个很好的趋势。
笔者平常还是在服务器上使用 neovim+cpp/golang/python 插件来编写代码,电脑对我来说就成了一个显示器,每次我直接ssh 到服务器然后 attach 到我的 tmux 会话就可以恢复工作环境。最近屏幕坏了报修,我换个笔记本直接 ssh 到服务器上依旧不影响我开发,环境都不用重新配置。但是你要是写 java,可能目前流行的各种编辑器都比不上 IDEA,不用非要去使用编辑器写代码。 当然不管使用什么工具,手速快了编写代码/文档的速度都是会大幅提升的。
打字速度对程序员重要么?
重要又不重要。不重要是因为敲代码其实在整个开发周期中其实不是重头,加上各种开发工具的补全,其实不需要特别快的打字速度。
但是笔者对打字对笔者来说还是很重要的,因为平常写博客、代码、文档、笔记等使用编辑器非常频繁(全部使用 vim 完成)。 笔者一天有超过 6 小时是在终端下工作的。
自己虽然可以盲打,但是对于一些特殊的符号比如右上角的一些符号,打字正确率依旧不是很高,严重拖慢了编码速度,虽然工作以来应该有十万行以上代码量了。
虽然程序员不是打字员,不需要那么飞快的打字速度,但是打字快总没啥明显的坏处。如果你觉得打字速度已经很快,也没有练习的必要。这篇文章告诉你一些提升英文打字速度的建议,而不是探讨对于程序员来说打字速度是否重要, 实际上笔者大部分时间依然是用来电脑记录笔记之类的文字,而不是敲代码。
笔者看到书上一些很好的内容,就会快速使用 vim 录入我的笔记代码仓库里,我没有使用传统的笔记软件,而是使用 Python 社区非常流行的一个文档工具 sphinx 编写 rst 格式的文件。(sphinx 类似 gitbook, rst 类似 markdown) 使用 sphinx + readthedocs 不仅仅可以导出成 pdf/epub 等格式的电子书,还可以免费托管到网站上,用 cloc 统计了一下也记录了好几万行了。(流行的 python web tornado/flask 框架的官方文档就是托管在 readthedocs 并且使用 sphinx 生成的)
刻意练习
我感觉如果不去刻意练习正确的指法和打字正确率,实际上后期即使打字再多也是很难有提升了。
最近尝试了一些练习打字的网站(有专门给程序员练习的代码片段),主要针对英文单词输入,代码中除了注释大部分都是英文单词,所以和中文输入还是有区别的, 你可能中文输入并不慢,但是英文打字不一定会很快,你可以尝试测试一下自己的 wpm(words per minute)能否达到 60 左右。
打算利用每天中午午休之前的时间花个十来分钟刻意练习打字,你不用专门花大量时间练习,从你每天刷手机,扯淡或者看短视频的时间抽出来几分钟就行。 尝试使用正确的方法练习一项技能,水平提升之后是一项非常有成就感的事情。 我打算用自己做一个测试,试试能否提升码字速度和正确率。
一些小建议:
- 选择一个趁手的键盘,充分熟悉你的键盘键位,不同键盘的键位设置是有区别的。(笔者在之前的专栏里介绍了一些程序员常用的程序员键盘),不要频繁切换键盘,肌肉记忆会丢失
- 指法放对。见下方图片,正确的指法是盲打的关键,否则很容易在某些特殊键位出错。尽量以标准指法为准,而不是自己舒服的指法,笔者自己从学习打字指法就都是正确的。
- 避免犯错。记住是避免而不是减少犯错,错误是效率杀手。对于练习打字来说,正确率远比速度重要,一开始练习可以稍微慢一点,慢一点也比打错了几个字符删了重打要快。
- 慢即是快。保证正确率很重要,不要一开始追求速度导致太多错误,如果你一开始打不快,可以不用着急,以正确的指法和正确率为准。
- 练习盲打。不要看你的键盘,尝试用正确的指法形成肌肉记忆,和练习使用 vim 一样,在你形成肌肉记忆之前,操作效率其实并不高。但是一旦养成了肌肉记忆,你的效率就会大幅提高。
- 保持节奏。保持一个平稳的节奏,练习的时候越心急越容易出错。(如果总是出错我建议你休息一下)
- 放松肌肉,矫正坐姿,手指大部分时间集中在主键盘区(用你的食指触摸 F 和 J 上的凸起把双手放对位置)
- 敲击键位中间。敲击准确,之后快速收回到主键盘区
- 长期坚持,零散时间练习。笔者在练习的过程中会卡在一些键位上长期过不去。我用的Peter's Online Typing Course 练习要求在 60 s 之内某个区域的键位一个字符都不能出错,非常苛刻。不过适度的练习之后确实正确率和速度提升了,这种感觉还是挺奇妙的。
正确的指法
笔者建议你纠正自己错误的指法,让自己尝试适应正确的指法,而不是自己怎么舒服就怎么用,舒服的键位可能对于盲打是没有帮助的。 这是一张正确的指法图片,请打字的时候时刻保持正确的指法和姿势。
![69d310130e5ae6a079f0edfacd2d28a1.png](https://i-blog.csdnimg.cn/blog_migrate/000a0c9590fa6fdd0e6e14e0c309cd76.jpeg)
推荐键盘
笔者在之前的文章中介绍过挑选键盘的一些注意事项,你可以参考一下。笔者家里和公司都是用的同样键位的 HHKB,不用来回适应不同的键盘。我建议你也保持一致,否则可能影响肌肉记忆。
PegasusWang:程序员双十一剁手指南zhuanlan.zhihu.com![8fe26e096b6d0d3a5dcd42f40c3db0f4.png](https://i-blog.csdnimg.cn/blog_migrate/b2754c2f6667facfb5f54786d82ea998.jpeg)
打字练习网站
笔者收集了一些不错的打字练习网站,还有一些是专门针对代码片段的。你可以根据自己的喜好挑选一个练习。
首先你可以做个简单的测试,看一下英文输入可以达到多少 wpm (words per minute),一分钟单词数据。笔者自己尝试了一下大概可以达到 60 wpm 多左右。
![b2708e098ae318ad97b3a324d517e507.png](https://i-blog.csdnimg.cn/blog_migrate/96cd71401248efacd989865fdd168516.png)
- https://www.ratatype.com/typing-test/ 先来做一个 wpm 测试吧
- https://typing.io/ 包含代码片段的练习网站
- https://www.keybr.com/
- http://www.speedcoder.net/ 可以展示出来正确的指法
- https://www.typing-lessons.org/ 一套系列的打字和指法教程,没事的时候可以练习一下,摆脱二指禅打字。笔者目前就练习这个
- https://www.keyhero.com/wpm-typing-tips/ 同样一个针对程序员的打字练习网站
- gtypist (brew install gnu-typist; gtypist) 一个linux/MacOS 命令行打字练习工具
选择困难的话,笔者使用的是这两个,感觉还不错:
- https://www.typing-lessons.org/ 一个打字教程网站
- https://www.keyhero.com/wpm-typing-tips/ 同样一个针对程序员的打字练习网站
视频里我会做一个简单的演示,网站提供了几十个教程,覆盖了所有的键盘键位。可以根据容易打错的部分来进行练习。目前笔者每天中午和晚上吃饭回到工位上都会几分钟左右的时间来练习,过一段时间看看网站上的分数能否提升。(目前基本在 65 wpm 左右)
对于英文打字来说,可以根据『音节』来进行练习,可以有效提升英文打字速度。keybr.com 这个网上就有类似的练习,感兴趣可以尝试一下。
总结
希望大家都可以通过正确的练习方式大幅提升自己的打字速度,打字快了你会更加喜欢编写代码,博客,文档的,尤其是你连鼠标都不需要的时候, 我就是半躺着手捧个蓝牙键盘完成这篇文章的。这篇文章实际上字数不少,但是其实没有笔者太多时间。我们首先是一个键盘侠,其实才是程序员。