英文原文:Tom Ryder - Vim Koans
本翻译已获得原作者 Tom Ryder 的许可。

Wq 大师和 Windows 开发者

Wq 大师正在指导一些 Vim 菜鸟。在他赞美许多 Vim 的美德的演讲之后,他问道是否还有问题。 一个年轻人举起了手。

“大师,通过怎样的手段可以过滤出纯文本表格中包含‘tcp’的行的第二列?”

Wq 大师什么也没说,转过去在身后的白板上写道:

:%!awk '/tcp/ {print $2}'

其他学生窃窃私语并表示赞同。

“但是我是在 Windows 下开发的⋯⋯”那个学生结结巴巴的说。

Wq 大师再次转过身去,擦掉了命令并写道:

:v/tcp/d
:g/tcp/s/\S\+\s\+\(\S\+\)\s.*/\1/

“什么!对于这样一个简单问题来说这太复杂了!”那个学生哭诉道。

Wq 大师再次转过身去,擦掉了命令并写道:

Microsoft Excel

学生顿悟。

没有太大的差异

一天,一个和尚拜访了 Wq 大师,并询问道:“大师,如果我掌握了 Vim,我的代码会有什么不同?”

Wq 大师回答道:“使用 Vim 之前:声明、定义、处理、打印;使用 Vim 之后:声明、定义、处理、打印。”

Wq 大师和 Markdown 侍僧

一个 Markdown 侍僧来找 Wq 大师并向他展示他的 Vim 插件。

“看,大师。”他说道:“我差不多已经完成了 Vim 宏,它可以将 Markdown 转化为 HTML。 我的函数纵横交织,我的解析器是效率的典范,并且我的结果完美无瑕。 我敢说我已经掌握了 Vimscript,并且我的作品将会验证 Vim 是一款面向英明的开发者的现代编辑器! 我做的正确么?“

Wq 大师读了好几分钟侍僧的代码一语不发。 然后他打开一个 Markdown 文档,并键入:

:%!markdown

HTML 立即填满了缓冲区。 侍僧哭了起来。

Wq 大师和 Unix 大师

一个年长的 Unix 大师来找 Wq 大师。

“我很困惑,Wq。关于你教导 Vim 的方式。 Vi 是圣洁的,但是 Vim 不是;它的代码蔓延满地,他的特性吞噬内存;他的二进制庞大臃肿;他的行为颇不一致。 这并不是 Unix 之道。我害怕你已经误导了你的学生。有什么可以挽回的么?”

Wq 大师点点头。“你说的对”,他说道。“Vim 并不完整。我们来修复它吧。我们开始好么?”

年长的 Unix 大师表示同意,并打开一个命令行。他键入:

$ vi vim.c

他开始写代码。Wq 大师看着他很长一段时间然后问他:“你实现的是哪种 Vi?Nvi?Vim?Elvis?”

“我不知道”,Unix 大师说道。“管它呢。”

Wq 大师点点头。 Unix 大师呆坐片刻,没有保存便关闭了文档。

没有最好的工具

一天晚上有风暴,Wq 大师的房子塌了。 第二天早上,他用他的旧工具开始重建房子。 他的学徒过来帮他,他们建了一段时间并取得了良好的进展。 在工作的过程中,学徒开始跟 Wq 大师讲他最近的成果。

“大师,我开发完一个绝妙的 Vim 脚本,可以给出一个文档的所有有用的信息。 它能计算单词、句子、段落的数量,甚至可以告诉你这个文档使用的是什么语法高亮规则。 我一直在我的状态栏中使用它。 这是一个优美的作品,我对它非常的自豪。 诚然,Vim 是一个伟大的工具!”

Wq 大师没有回应。以为自己无意中触怒了大师,学徒陷入沉默并继续工作。

学徒并排放置了两块木板并摆好了钉子,正准备钉进去,却发现够不到锤子。

“能帮我递下锤子么,大师?”

Wq 大师递给学徒一把锯子。

学徒顿悟。

Pope 大师的梦

Pope 大师有一次梦到自己成为了 Emacs 用户。 当他醒过来的时候,他感叹道:

“我不知道是我 Tim Pope 梦到了我是一个 Emacs 用户,还是一个 Emacs 用户梦到了我是 Tim Pope!”

优越的编辑器

Neil 大师和 Wyatt 大师因教导 Vim 之道而闻名,他们周游各地教导学生。

一天一个学生问他们:“Neil 大师谈吐温和平稳,他说的话小心谨慎,语调却不容置疑。 但是 Wyatt 大师却充满激情,开始和停止,他的演讲快速而充满活力,他的灵魂融入了他的演讲。 请问教导 Vim 的方式哪个最优秀?”

Neil 大师和 Waytt 大师异口同声地答道:“编辑器哪个最优秀?Vi 还是 ex?”

数个学生顿悟。

慢学生的绝望

Wq 大师正在吃午餐,一个学生冲进来他的房间跪在他的脚下。 眼睛里充满泪水,他看起来有深深的挫败感。 Wq 大师放下他的碗问道:“什么让你如此沮丧,年轻人?”

“大师”,他说道:“我放弃了。我永远也掌握不了 Vim! 我永远也学不会前人伟大的方法! 我永远也学不会将 Vim 用得简单粗暴并有着完美的效率!”

“你为什么这么说?”

“目前为止,我是最差的学生。 当我挣扎着写了一个简单的宏,我的同学们正在轻松地写着递归宏。 当我试着记住空格字符的正则表达式时,我的同学们正在写 Vimscript 中的循环复杂度测试。 我太慢了,我感到羞愧,恐怕我已经失败了。”

Wq 大师站起来。“跟我到窗前”,他说道。

学生站起来跟随 Wq 大师到了窗前,看到街道对面 Wq 大师邻居的房子。 透过窗户,两个像是西装革履的年轻人正在写一份文档。

“你看到了什么?”Wq 大师问道。学生看了一会。

“那个年轻人正在用 Microsoft Excel 来生成电子表格。 它正在手动更新每一个单元。 他甚至都不知道如何使用公式。 他输入大写字母要按 Caps Lock,输入完了再按一下。 他太慢了! 我不明白。他为什么还能这么愉悦?”

“看到这个年轻人,你为什么不能?”Wq 大师回应道。

学生顿时就领悟了。他的名字是 Qa,之后他成为了一名伟大的大师。

征服 Vimscript

一个学生询问 Wq 大师:“我什么时候可以知道我已经掌握了 Vimscript?”

Wq 大师回答道:“当你从未用过它的时候。”

Vim 的挽歌

一个年轻人恳求 Wq 大师做他的观众,听他读他最近的作品,一首 Vim 辉煌的挽歌。 他眼中噙着泪水开始朗读他的肺腑之作,仿佛将他的灵魂倾倒在他对文本编辑器的崇拜之心上。

大师坐在那里听了一会他的诗。 第十句诗之后,他举起了他的手。 “请你不要读了。你的诗太可怕了。”

年轻人非常的生气。

“Wq 大师,你肯定是所有人中最能感受这首诗的人。你是一个了解编辑器之美的人。 你怎么可以如此毫不耐烦、不屑一顾?甚至这首诗我都是用 Vim 写的!”

“你用 Vim 写的”,大师说道。“但是你的格式是不均匀的,你的韵脚是不一致的,你的隐喻模糊不清。 你用了一个很好的工具写了一首很糟的诗。 你不是诗人,Vim 也不能让你成为一个诗人。 我的学生有很多并不是程序员,Vim 也同样没法帮助他们。”

“Vim 是永恒美丽的”,诗人抗议着。“对于挽歌来说它是值得一写的题材。”

“Vim 不会永恒的。 Nvi 不会永恒的。 Vi 本身也不会永恒的,只有 Vi 的本质才会。 Emacs 有着 Vi 本质,nano 有着 Vi 本质,甚至 Notepad 也有 Vi 本质。 你目光狭窄,你趋炎附势,因此你没法把握你诗的主题的真正价值。 你必须离开。等你掌握了 Emacs 再回来。”

诗人非常的羞愧地离开了。他再也没有回来。