Vim 学习卡和提鞋的问题

vimemacs1

题图由GraphSketcher(大名鼎鼎的Omni提供的免费开源产品)绘制。

Vim 这个系列很久没写了,今天从坑里捡起来,发现灰落了厚厚一层,抖掉灰尘,我决定续写 Vim 。在纸版《MacTalk·人生元编程》里我已经写了 Vim 缘起、模式、帮助、配置、概念、技巧和部分常用插件,手里有书的可以先看看那部分内容。今天准备写写 Vim 学习卡。

说到 Vim,常常让人想起 Emacs,在这个蓝色的星球上,在编辑器领域,永远存在两股暗黑势力,他们就是 Vim 党和 Emacs 党,这两股力量势如水火,分别守候着两大上古神器:Vim 和 Emacs……不停的有新人入会,也不停的有旧人出走,因为很多人发现这两大神器的学习曲线是如此陡峭和诡异,在没有发现神器的强大力量之前,这些人就离开了,去寻找 Eclipse 和 jetBrains 的庇护。但是永远会有一些人留下来,通过了艰难的考验,坚定的守护这两大神器……

以上是一种文艺的写法,真实的情况是:双方经常叫嚣 A 不配给 B 提鞋,B 甩了 A 几条街,到底是扔鞋还是扑街,就看谁的戾气更重了。古人云,文人相轻,其实技术领域也是一个德行,经常有人在人堆里喊一声「Perl 是世界上最好的语言,Ruby 不配给 Python 提鞋」,之后就是一群程序员争先恐后冲上去一顿群骂,等所有人口吐白沫笔走龙蛇的时候,发现原 PO 主早已转身离去专心致志的去写 Java 了,不带走一片 C# 代码。

对于这种技术争论,我的观点是:不提倡。

无论是夸,还是骂,您都得说到点子上,有理有利有节的文章永远胜过无谓的口舌之争,网络上的争论永远没有终点,成文成章才能流传。在这方面做的比较好的程序员,举两个例子:徐宥( http://blog.youxu.info )和王垠( http://www.yinwang.org ),倒不是这两个人的所以观点我都同意,而是他们写文章的态度非常值得赞赏。这两个人在「痛恨 Unix」领域还有过一次交锋,感兴趣的读者可以去他们的博客看看,可惜的是徐宥已经写的越来越少了……

今天的文章题图分别是 Vim 和 Emacs 的学习曲线,Vim 的曲线异常陡峭,但是当你度过了那一段艰难时候,就会领略到千帆竞发、百舸争流的美妙,并且从此天堑变通途。Emacs 则是初期似乎不过尔尔,但是学习愈深愈艰,而且还会出现回退,反复,360度大回环等匪夷所思的情况,到最后你终于明白,Emacs 原来是个伪装成编辑器的操作系统,满眼都是泪!

在互联网的江湖里流行着「唯快不破」的传说,一款互联网产品似乎不以迅雷不及掩耳盗铃之势做出来,江山美人就会白白拱手送人。圈地,出产品,拉用户,快干猛上,一抬头已经花团锦簇!当然,快的后果也可能是这块地压根没有江山美人,刨了半宿,其实是块盐碱地。在产品的成败上,都是以结果论英雄,所以,急性子成功了,当然唯快不破,慢公司赢了,那就是以慢打快,以柔克刚。

但是,「唯快不破」这个词,用来形容 Vim 却是最合适不过。我在之前的 Vim 系列中写过:

写过程序的人都知道,编程的时候双手大部分时间都放在键盘上,或编码、或插入、或移动、或定位、或查找,这种连续操作的时间和频率远远大于阅读、翻页、设置字体、摆弄样式等文案工作,而二者往往产生很多停顿和间隙,而编程时的停顿是非常影响编程效率的,所以 Vim 的设计理念就是通过模式的转换、命令的组合和数以万计的插件,保证程序员在编程的过程中,双手尽可能保留在键盘中央的区域,快如闪电的编辑文件,并且,不需要鼠标。

想做到快如闪电,就需要你记住四种模式切换(普通模式、插入模式、可视模式、命令模式)、大量的快捷键和命令,想通过死记硬背记住这些东西是不现实的,唯有长期坚持不懈的练习和使用才能达到随心所欲的地步,就像乔峰一般,任何平坦无奇的武功到了他的手里,均可化腐朽为神奇。难道就没有捷径和快速学习的方法么?

捷径真没有,方法可以有!今天就给大家说说如何通过 Vim 学习卡逐步实现从入门到精通。

所谓 Vim 学习卡,是用 Vimscript 编写的一个 Vim 脚本,其中包含了两百多个 Vim 用法。首先,我们把这个文件下载到本地,下载地址:

https://gist.github.com/gmccreight/7519289/raw/master.vim

为了避免混淆,把该文件复制命名为 study.vim,命令如下:

cp master.vim study.vim

用 Vim 命令打开文件,我们可以看到文件分为两部分,从第35行华丽的分割线以上是 Vimscript 脚本,用来创建三个命令:「,,」「,c」「,k」,后续我们将通过这三个命令操控 Vim 卡片。

分割线以下是两个队列,第一个是「= Study」,在37行,表示在学的 Vim 卡片。第二个是「= Known」,在831行,表示已知的 Vim 卡片。

开始时所有的 Vim 卡片都在学习队列种,每个 Vim 卡片有三行,第一行是命令,第二行是解释,第三行空行。代码片段如下:

M
go to the middle of the window(大写 M 把光标移到窗口中部)

L
go to the bottom of the window(大写 L 把光标移到窗口底部)

10L
go to the tenth line from the bottom of the window(10+大写 L 把光标从底部上移10行)

<c-d>
Go down half a screen(ctrl +d 向下翻半屏)

学习方式就是从第一个 Vim 卡片开始,学命令,看解释,然后进行操练,练习完成后通过那三个命令移动 Vim 卡片。具体做法:

1、在普通模式执行「:so %」,加载 Vimscript 脚本,定义上面提到的三个命令。

2、把光标移动到 Vim 卡片的第一行,执行:

,,:两个逗号,表示你已经比较熟悉这个命令了,但是还不放心,该操作会把 Vim 卡片放到学习队列的最底部。

,c:逗号+c,表示你对这个命令不明觉厉,希望很快再次见到它,该操作会把 Vim 卡片下移几位,这样你很快就能再次见到它了。

,k:逗号+k,表示你已经彻底掌握了这个命令,该操作会把 Vim 卡片移除学习队列,放入已知队列,也就是「= Known」的下面。

每次学习完成之后,用「:wq」保存退出,下次打开根据上次的进度继续学习。如此循环往复,生生不息,武功终将大成。

当然,你如果总结出了该卡片不包含的命令,也可以加入进来,不断完善,这个 Vim 脚本将变成你的 Vim 学习宝库。

这世界上一直存在一条路,让我们的能力从平庸到杰出,这条路漫长而艰辛,只有少数人愿意走下去,所以,优秀的人永远是少数——来自《MacTalk·人生元编程》

先有 Mac 还是先有钱?

macres

自从开设了这个公众号以后,收到最多的问题是:听了 Mac 君的介绍,我也觉得 Mac 很好,可是穷屌丝一枚,真买不起,怎么破?前几天我在微博上说,读了我的书,就有 Mac 了。居然有读者来问:这是真的吗?

今天我要郑重的回答一下这个问题:是真的。

你信吗?

你应该相信。因为我谈的根本不是 Mac 和金钱的问题,而是程序员合理投资自己的问题。

有时候很多人类表现出来的行为特别不可思议。比如大家会把很多资源和时间花在对个人成长毫无意义的事情上,而到了真正需要进行投入和学习的时候,我们会理直气壮的说:对不起,我既没时间,也没银元。

大部分程序员在这方面的表现绝对是「猿国不让须眉」,咱们会:

用大量的时间寻找各种盗版软件的注册码和注册机,而不是去购买几十块钱的正版软件。
用大量的时间搜索各种粗制滥造的扫描版电子书放到硬盘里,并安心的认为书中的知识都已经属于自己,而不是去买一本正版书籍并把它读完。
用大量的时间研究goagent、vpngate等免费的越墙方案,而不是去买一个 VPN 或「曲径」轻轻松松翻越长城并了解世界。
用大量的时间优化已经用了四年烂电脑以期击败85%的同类用户,而不是买一款配备了视网膜屏的 Macbook 去击败世界。

很多年过去了,前者以为自己节省了金钱,也积累了资源,他们擦擦汗,抬望眼,仰天长啸:我特么真是勤俭持家的好猿啊!这时他们会惊奇的发现,那些看起来傻乎乎的后者,早已一骑绝尘,夕阳西下,「前者」只能看到「后者」奔跑中的背影……和一缕尘埃。

当你还在为每年99刀的 iOS 开发者费用进行汇率计算的时候,人家已经开发出上架的 App 并工资翻倍了。当你还在纠结要不要买一本正版图书的时候,人家的书都已经开始第三次印刷了。当你还在为破解和安装盗版软件绞尽脑汁的时候,人家已经写出正版软件了。当你还在打工的时候,人家已经创业成功了……

每个人成长到一定阶段的时候,最值钱的是你的时间,而不是别的什么东西。这么说并不是鼓励大家无节制的花钱,但是,如果能够用合理的价格购买到工具、产品和服务,最好不要花时间去找替代品,至少,你要评估一下你的时间是不是那么不值钱。

写到这如果你们还不相信,我就给你们讲一个真实的故事:

今天下午一位老大姐把我叫过去,儿子马上要生日了,她准备送给儿子一台 MacBook,让我给选选。这位老姐算是我的老领导和老朋友,我自然不敢怠慢,问了孩子的年龄、学习程度和基本用途,然后分别为她介绍了 Macbook Air 和 Macbook Pro 的优缺点和使用场景,最后根据性价比最好的原则,推荐了13寸的视网膜屏 Macbook Pro,老姐听得频频点头。讲完后我擦了擦额头的汗水,问,您觉得满意不?满意的话我给推荐一个香港代购。

老姐问我,最贵的是哪款泥?我说15寸的 RMBP 高配。老姐说就是它吧,然后就高高兴兴下单去袅,还买了一堆配件……和 Apple Care!

现在你们知道了吧,土豪就是这样子生活的。钱只是一种资源,从资源角度来看,有了资源可以做更多的事情。世界并不以穷人富人划界,而是用自由度来划分你的人生的。

对于这样的大姐,肯定是先有钱,再有 Mac。

对于大部分程序员,想要有钱,你最好先有一台 Mac……


很多读者不断的问电子书与纸书的区别,这一点我在「纸书的秘密」一文中已经写的很清楚了,但鉴于很多人都是浅阅读,我就再说一遍:

纸书的内容比原来的电子版增加了 Mac 入门和 Mac 演化史系列、Linux 系列、Vim 插件系列、职场系列、编程与写作等内容,大概增加了十万字左右。另外,纸书的版面全部重新设计,我根据书中的主题和时间线,重新调整了文章的顺序和文字结构,更符合读者阅读习惯。

已经买了电子版的,买本纸书也不会有损失,不买亦然。当然,如果您愿意支持我,我同样高兴。

点击{原文}查看本书在知乎上的评价,如果您读来有感,也可以去写写画画。