# 4. 编辑器巡礼

内核恐慌 · 2014-11-16

<https://lib.pan.icu/bf0fc852-8754-4355-8d7e-f520a3ebe2d1>

本期《内核恐慌》中，Rio和吴涛作为Vim用户，围绕编辑器与IDE展开巡礼。他们首先剖析Vim与Emacs的圣战，指出Vim的核心优势在于模态编辑与操作语言（如D3W删除三个单词），使其在编辑效率上极高，但脚本语言Vim Script丑陋且扩展性弱；而Emacs本质是一个操作系统，以Elisp驱动，可扩展为浏览器或Spotify客户端，但快捷键对小指伤害大。随后，他们对比了Sublime Text（对初学者友好）、TextMate（因Ruby on Rails作者DHH的Screencast而走红）、Chocolat（Mac原生但收费且扩展不足）、Windows阵营的UltraEdit、EditPlus、Notepad++（免费且轻量可配置为基本IDE），以及基于WebKit的Atom（资源占用高且不稳定）。在IDE部分，他们认为Visual Studio的IntelliSense最聪明但版本繁多且收费；Eclipse虽免费却臃肿丑陋、响应粘滞，在Mac上尤其缓慢；IntelliJ则更快、配色更好，但付费版本才支持Java EE；Xcode稳定性差，曾半小时间崩溃一次，但Playground实时演算功能惊艳。最后，吴涛补充了微软于2014年11月12日开源.NET服务器端并推出免费Visual Studio Community Edition的消息。

## Questions this episode answers

### 为什么程序员之间会有“编辑器圣战”？

吴涛和Rio认为，圣战源于程序员对工具产生的非理性崇拜，就像宗教情结一样。他们虽然追求理性，但往往忽视情感建设，一旦对方观点不同，就产生“我一定对，你一定错”的偏执，而这种争论被称作“holy war”本身就暗示了非理性的宗教色彩。

[5:59](https://lib.pan.icu/bf0fc852-8754-4355-8d7e-f520a3ebe2d1?t=359000)

### Vim的模态编辑是如何工作的？为什么说它像一种语言？

吴涛解释，Vim区分普通模式和插入模式，在普通模式下，用户可以用类似语言的结构告诉编辑器做什么，比如按d3w就是“删除三个单词”（delete three words）。Rio补充，这种动词+量词+宾语的语法让编辑效率很高，因为编写代码时大部分时间是在修改和移动，而非输入新内容。

[20:46](https://lib.pan.icu/bf0fc852-8754-4355-8d7e-f520a3ebe2d1?t=1246000)

### Acme编辑器有哪些反常规的设计？

Rio介绍，Acme是Plan 9系统上的编辑器，设计非常先锋：默认使用非等宽字体，认为这样代码更易读；完全不使用语法高亮；最特别的是，它的菜单栏像普通文本一样可以被编辑，用户可以通过鼠标中键点击菜单栏中的文字执行命令，实现了“可以编辑自身的编辑器”。

[38:52](https://lib.pan.icu/bf0fc852-8754-4355-8d7e-f520a3ebe2d1?t=2332000)

### Sublime Text为什么被推荐给编程初学者？

Rio在节目中提到，Sublime Text是一个非常好的入门编辑器：它虽然要付费，但未付费版功能无阉割，只是偶尔弹出购买提示；它在不同平台下快捷键略有差异，但在Mac下很原生；而且它有大量插件和漂亮的语法高亮，非常适合新手开始编程学习。

[11:49](https://lib.pan.icu/bf0fc852-8754-4355-8d7e-f520a3ebe2d1?t=709000)

## Key moments

- **[0:00] 开场**
  - [0:01] 两位主播认为今天的话题太大，可能 handle 不了。
  - [0:20] Rio 承认自己和吴涛都是 Vim 的中度用户，对话题有偏见。
  - [0:55] 吴涛说“虚心接受，坚决不改”。
  - [1:22] 吴涛宣布本期主题是编辑器和 IDE，属于开发工具系列。
  - [1:41] 吴涛用 Go 的时间格式举例，学了一点点 Go。
  - [2:12] Rio 提出写中文“12 月”的 localization 问题。
- **[4:08] Vim模态度**
  - [4:08] 进入程序员的圣战：Vim 和 Emacs 之争。
  - [4:39] 吴涛在知乎上半场 Holy War，批评 PHP 烂且流行不等于不烂，提到 Windows。
  - [5:07] 因说 Windows 不是最好操作系统，被人说暴露水平。
  - [5:29] Rio 认为程序员喜欢吵架是死理性派一定要分出高下。
  - [5:49] 吴涛说真正死理性派会意识到争吵无意义，但 Holy War 是非理性崇拜。
  - [7:49] Rio 提出猜想：为了扩大 mind share，希望更多人使用共同工具，有现成库。
- **[43:04] Emacs宇宙**
  - [43:05] Emacs 是 Elisp 写的操作系统，Vim 只是修文字的小工具。
  - [44:30] Emacs 可以写 Spotify client，做各种扩展。
  - [45:06] Emacs 用户开机后先打开 Emacs。
  - [45:24] Vim 用户必须大量利用外部工具，而 Emacs 内可以永远待着。
  - [45:46] Rio 举例远程调试需 SSH，Vim 无内嵌终端，Emacs 全屏。
  - [46:31] 在 Vim 里很少所有工作都内部完成。
- **[1:06:28] 现代编辑器**
  - [1:06:29] 开始讲现代图形界面编辑器。
  - [1:06:55] Vim 和 Emacs 观感不美，Mac 用户喜欢原生 GUI 编辑器如 BBEdit。
  - [1:07:57] 方向键符合直觉，画了箭头。
  - [1:08:30] 早期键盘无方向键，中华学习机方向键是正方形对角线切四块。
  - [1:09:43] Bill Joy 用的键盘无方向键，所以 HJKL 为方向。
  - [1:10:45] Sublime Text 是跨平台编辑器，Mac 上做得挺原生。
- **[1:39:05] Acme**
  - [1:40:30] 不等宽程序更优美，用 Tab 缩进。
  - [1:41:43] Rob Pike 不用语法高亮，Rio 认为语法高亮可能 overrated。
  - [1:42:21] Acme 菜单元件可编辑，左键选中中键执行，可编辑自己。
  - [1:48:56] 它是一个可以编辑自己的编辑器，非常先锋。
  - [1:49:50] 非正统方式有时 pragmatic 有时 alien，但助你跳出舒适区。
  - [1:50:17] 听到激进古怪观点且厉害人在做，应 give it five minutes。
- **[2:01:14] IDE**
  - [2:02:35] Ultimate 有 record tracing 等匪夷所思功能。
  - [2:03:18] 微软过去靠卖 IDE 赚钱，Rio 认为不该收费。
  - [2:04:10] Steve Ballmer 的 "developer developer developer"。
  - [2:06:05] Rio 之前用 Visual C++、C#，觉得 C# 逆天，Delphi 作者做的。
  - [2:07:04] Dreamspark 已不必要，微软正淡出。
  - [2:07:28] .NET 环境在 VPS 很少，微软输掉 web app 市场。
- **[2:44:25] 尾声**

## Speakers

- **Rio** (host)
- **吴涛** (host)

## Topics

软件开发

## Mentioned

Microsoft (company), Acme (product), Atom (product), Chocolat (product), EX (product), Eclipse (product), EditPlus (product), Emacs (product), IntelliJ (product), NeoVim (product), NetBeans (product), Notepad++ (product), SciTe (product), Sublime Text (product), TextMate (product), UltraEdit (product), VI (product), Vim (product), Visual Studio (product), Xcode (product)

## Transcript

### 开场

**Rio** [0:01]
呃 ， 感觉今天这个话题有点太大 ，不知道能不能在一 、 一两个小时内讲得清楚 。

**吴涛** [0:09]
对 ，而且我觉得有可能以我们两个的能力 handle 不了 。

**Rio** [0:13]
对 。

**吴涛** [0:14]
就我们两个其实也不是在这个话题上面非常有经验的两个人。

**Rio** [0:20]
关键是我觉得 ， 首先我们两个都是一个 Vim 的中度用户 ， 这个在本来就是在什么起点上就是有偏见的 。

**吴涛** [0:28]
对 ， 所以我们算是一个

， 呃 ， 别人叫什么 informed opinion， 我们这边是 opinion inform- information， 对 。

**Rio** [0:38]
对 ， 所以如果你不是 Vim 用户 ， 或者你听到觉得有些不 、 不赞同的观点 ， 请记住这一点 ： 我们这是两个具有偏见的人在聊一件非常个性化的东西 。

**吴涛** [0:55]
对 ， 我们虚心接受 ， 坚决不改 。

**Rio** [0:57]
嗯 ， 好 。其实我们还是说一下在聊什么吧 。

**吴涛** [1:03]
啊对 ，其实我们这一期的主题是编辑器 ， 或者说 IDE， 就是写代码的工具 。 我们可能会有很多期持续讨论 ， 呃 ， 关于开发软件的很多相关的工具啊 、 流程啊相关的话题 。

**Rio** [1:21]
嗯哼 。

**吴涛** [1:22]
嗯 ，也大概算是一个系列吧 ， 就尽量会聊一些比较贴近开发过程的东西 。 呃 ， 北美山地时间 2006 年 1 月 2 日下午 3 点 04 分 05 秒 ， 您正在收听到的是 IPN 旗下的 Podcast 广播 《 内核恐慌 》。

**Rio** [1:41]
所以 、 所以你 、 你学了够了 。

**吴涛** [1:43]
没错 ， 对 。 如果刚才 、 呃 ， 你记住了这个 sequence 的话 ，2006 年 1 月 2 日下午 3 点 04 分 05 秒 ， 呃 ， 你就学会了一点点够了 。

**Rio** [1:54]
哈哈哈 。

**吴涛** [1:55]
对 ， 这是我们上一期节目结束的时候 Rio 交给我的一件事情 。 对 ， 我觉得这个这两天仔细想了一下， 的确算是一个比较 ， 呃 ， 很 pragmatical 的解决方案 ，但是还是觉得有点 、 有点奇怪就是了 。

**Rio** [2:12]
对 ， 我觉得有 、 有一点我觉得挺奇怪的点是 ， 比如我问你一个问题啊 ， 你要写中文的 "12 月 " 这三个字你怎么办 ？

**吴涛** [2:20]
对啊 ， 就是你要把它 localization 的话 ， 的确可能要 、 要考虑到 localization 的话 ， 的确可能不是一个非常理想的解决方案 。

可是反过来你用 percentage 这种方式好像也不行啊 。

**Rio** [2:35]
对 ，也是要单独做一下处理 。

**吴涛** [2:37]
也是要考虑到 locale 的 。

**Rio** [2:39]
对 。

**吴涛** [2:39]
对 。

**Rio** [2:39]
但是我觉得反正 go 的这种时间的表达方式的好处就是 ， 呃 ， 上次我也讲了嘛 ， 就不需要查手 、 查手册 ， 这点是挺爽的 。

我不知道你有没有这么觉得 。

**吴涛** [2:50]
是没错 ，因为它的这个安排就刻意把它 。

**Rio** [2:53]
所见即所得了 。

**吴涛** [2:55]
对 ，而且它的这个 sequence 是 ， 就是当然以美国人的逻辑 ， 我觉得不可理 、 理喻的就是 1 月 2 日， 就是日在前面 ， 日在后面 ， 月在前面 。

**Rio** [3:05]
嗯 。

**吴涛** [3:05]
我在推特上看到过一个 、 一个 、 一个漫画 ， 说 Logic vs. American Logic， 然后左边是个金字塔 ， 最上面的是日， 然后下面是月 ， 最下面是年 。

**Rio** [3:16]
就是从小到大的 。

**吴涛** [3:18]
对 ，是个倒三角 。 然后 American Logic 那边写的是月 ， 然后日、 年， 然后上面是一个倒三角 ， 下面是一个梯形 ， 就嘲笑美国人的这个逻辑 。

**Rio** [3:29]
不过从 。

**吴涛** [3:30]
但我觉得其实可以加一个 ， 就是如果你 、 你把中国人的逻辑考虑进去的话 ， 那中国人其实更合理 。 中国人是从上到下 、 从大到小 ， 是一个倒金字塔 ， 年月日、 然后小时分秒 。

但是在 。

**Rio** [3:43]
嗯哼 。

**吴涛** [3:43]
就是在这个所谓 normal logic， 或者说西方 logic 这一边是 。

**Rio** [3:47]
从小到大嘛 。

**吴涛** [3:49]
先从小到大 ， 然后先从小到大 ， 然后再从大到小 。

**Rio** [3:53]
对 ， 反正我觉得只要不管你是从小到大 ， 就跟那个 byte order 一样哈 ，不管你从小到大还是从大到小 ， 你只要遵从一个统一的规则就好了 。

然后美国人这一套 ， 哈哈哈 ， 实在是太奇怪了 。

**吴涛** [4:08]
没错 。 嗯 ， 对 ， 回到我们今天的这个 、 这个 holy war 的主题上面 ， 就是我们觉得可能谈编辑器总会不可避免地谈到这个程序员界的若干大圣战之一 ，也就是 Vim 和 Emacs 之争 。

### Vim模态度

**吴涛** [4:30]
呃 ， 我们其实也无意挑起什么 flame war，但是 ，但是也有可能这是一个不可避免的事情 。

**Rio** [4:38]
嗯 。

**吴涛** [4:39]
对 。其实为 、 为什么 、 为什么程序员界有这么多的 holy war？ 就是我刚才 、 我前两天也不小心在知乎上挑起了半场 、 小半场 holy war。

我 、 我在那边 bitching PHP 是一款多烂的语言 ， 然后在下面说 ，有人说 ， 嗯 ， 那它为什么还这么流行呢 ？

我说 ， 我说烂呢 ， 那就 、 就是一个东西流行并不意味着它不烂呀 。 你看那 Windows 不也是最流行的操作系统吗 ？

然后这句话就 ， 哈哈哈 ， 就 、 就能对 ， 触到 、 触到某些这个 flame war 的 、 的 、 的争战之点了 。 然后有人说 ， 呃 ， 嗯 ， 你说什么 Windows 不是最好的操作系统 ， 这句话就暴露你的水平 。

**Rio** [5:24]
哈哈哈 。

**吴涛** [5:24]
好吧 ，yeah，so be it。

**Rio** [5:28]
嗯 ， 对 。

**吴涛** [5:29]
对 。

**Rio** [5:29]
嗯 ， 呃 ， 先 、 先回答那个问题吧 ， 为什么会有这么多这种所谓圣战 ， 或者说为什么程序员特别喜欢吵架 ？

我觉得可能就是什么死理性派吧 ， 就是一定要分出一个对错 ， 一定要分出一个高下 ，是不是有这个原因在里面 ？

**吴涛** [5:49]
可是 、 可是真正死理性派应该会意识到这种争吵的无意义之处啊 。 但我觉得这不是其实 。

**Rio** [5:57]
那就不是死理性派 ， 那就是活理性派 。

**吴涛** [5:59]
你想 、 你想想 ， 就是 flaming war 这个词可能不是那么特 、 特别的突出这点 ，但是 holy war， 你想想这个词 ，holy。

**Rio** [6:07]
嗯 。

**吴涛** [6:08]
Holy 是一个非常 ，holy 只有在对于宗教的 ， 就 holy 本身是一个宗教的概念 ， 对吧 ？

**Rio** [6:15]
嗯哼 。

**吴涛** [6:16]
你只有 、 你只有对某种东西产生出了非理性的崇拜 ， 才有可能认为这件事情是 holy 的 。

**Rio** [6:26]
嗯 。

**吴涛** [6:26]
对吧 ？

**Rio** [6:27]
有道理 。

**吴涛** [6:28]
那如果你真正是一个真正的死理性派 ， 那你应该能够克服情感上的偏见 ， 来就事论事地讨论问题 。

但实际上我们看到 ， 至少我是不可能做到这一点的 。

**Rio** [6:43]
就是你不能摒除感情色彩 ， 然后再考虑你的每一个决定那些 ，是吧 ？

**吴涛** [6:48]
对 ，而且我觉得其实很多程序员

是具有这样的一种感情上的偏执的 。 因为 ， 呃 ，在标搒或者说追求死理性派这一个 、 这一个身份认同的同时 。

**Rio** [7:04]
嗯哼 。

**吴涛** [7:05]
呃 ， 人们会试图去 ， 或者说有意无意地忽视了感情上面的情商建设 ， 可以这么理解 。

**Rio** [7:13]
嗯 。

**吴涛** [7:14]
就是 、 就是一旦对方有和自己不一样的观点的话 ， 就很容易产生一种情感上的偏执 ， 说你一定是错的 ， 我一定是对的 。

**Rio** [7:25]
哼 ， 这个我还没有意识到 。

**吴涛** [7:28]
对 ， 我觉得其实是一种 ，是其实是一种宗教情结 ， 就是 holy war 这个名字 ， 或者说不是宗教情结 ，而是一种非感 、 非理性的情结 。

就恰恰是因为非理性的部分被人忽视了 ， 才会以这种看似理性的方式去 ， 呃 ， 打这样一场战争 。

**Rio** [7:48]
嗯 。

**吴涛** [7:49]
Anyway。

**Rio** [7:49]
我 、 我 、 我又有一个猜想哈 ， 我不知道是不是 、 是不是正确的 ， 这但是这跟它是不是理性的 ， 呃 ， 我们可以再讨论 。

就是我觉得编程 ， 或者说你做一个思想的工作 ， 或者你做一种什么生产力的工具也好 ， 还是做一个什么编程语言也好 ， 你 、 你都是要找到一个群体的 ， 对吧 ？

然后你是需要所谓扩大你的这个 mind share 嘛 ， 就是有更多的人和你分享同样的观点 ， 或者是跟你有同样的这个对某一种事情的认知 ， 这样对你来说整体而言是有好处的 。

啊 ， 举个最简单的例子 ， 比如说你是一个很小众的语言 ， 那么你可能你是这个很小众语言的这个铁杆粉丝 ， 那你可能很经常会觉得 ， 哎呀 ， 这个问题为什么不用这个语言写 ？

这样写出来反而会很优雅啊 ， 结果会多好 。 而且一旦有很多人这么写的话 ， 那我很多 library， 就是所谓的库 ， 就已经有现成的 ， 我也不用自己再动手写 ， 我就可以直接拿来用就可以了 。

那么出于这种比较自立的角度去看的话 ， 你的一个默认的倾向就应该是 ， 就如果你真的是很喜欢这个东西的话 ， 你会把它推荐给你认识的或者不认识的人， 然后让他们也能够 ， 呃 ， 像你一样认识到它的好处和优点 ， 从而加入你的行列 ， 从而为这个东西 ， 就所谓扩大这个东西的 mind share 嘛 。

然后这对于这样对于你个体而言也是非常有利的一个 、 一个结果 。 你 、 你我 、 我不知道这样讲 ， 呃 ， 说清楚看看我讲的那个意思 。

**吴涛** [9:22]
是 ， 我可以理解 。 就是 ， 呃 ， 换一种话 ， 换一个角度说 ， 呃 ， 每一种工具 ， 或者说比如说我们非常推崇 Vim， 就你和我都是 Vim 党 ， 那我们两个会对于这种工具所推崇 ， 或者说这种这个工具的设计者所 ， 呃 ， 使用 ，在工具之中注入的这么一种使用哲学 ， 或者说使用模式 ， 呃 ， 产生一定的意见 ， 然后我们会认为 ， 呃 ， 同样持有这样意见的使用

者是我们的同类 。 但是在一些其他编辑器里面可能没有这样的倾向 ， 或者说这样的倾向会比较少 ， 比如说我们很少会 ，也许这样的地方真的有 ，但是我们很少会听说有什么 Notepad 用户会组成这么一个兴趣小组 ， 或者是 ， 呃 ， 更大众的 ， 比如 Eclipse。

我觉得 Eclipse 好像也是一个非常非常路人的这么一个编辑器 ， 很少会有人非常以使用 Eclipse 为 ， 呃 ， 为一种身份认同的标志 。

有可能是因为它太普遍了 ，也有可能是因为它太 、 太平庸了 。

**Rio** [10:31]
嗯哼 。

**吴涛** [10:31]
但对于任何一种稍微具有一些 ， 就像我说的这种使用哲学在里面的工具来说 。

**Rio** [10:38]
嗯哼 。

**吴涛** [10:39]
呃 ， 这种用户情结是很容易产生的 ， 就像你说的 。

**Rio** [10:43]
对 ， 所以就是反正就是一个什么身份认同在里面啊 ， 我觉得我们会找到自己的同类 ， 然后去交流一些使用体验啊 、 心得体会啊 ， 包括什么各种插件啊之类的 。

然后， 呃 ， 我 、 我反正我 、 我个人会有这种 、 这种倾向吧 ， 反正 。

**吴涛** [10:59]
嗯 ， 对 。

**Rio** [11:01]
OK， 呃 ， 今天然后我们还是从这个最 ，也不叫最古老哈 ， 就是争吵得最凶的两大编辑器开始入手吧 。

**吴涛** [11:09]
对 ， 最最经典的一场战例分析开始 。

**Rio** [11:12]
对 ， 呃 ， 呃 ， 先讲的那个是我和 ， 呃 ， 吴涛都很喜欢的 Vim 哈 。其实 Vim 其实它不仅仅是一个编辑器 ， 对吧 ？

**吴涛** [11:22]
对 ，Vim 其实是一组编辑器 ，在最早最早的就是 Vim 编辑器 ， 就 Vim 这种编辑器 ， 可以追溯到一个叫做 ， 呃 ，X 的 、 的 Text Editor， 就是 ， 呃 ， 它最早是在 Unix 上面的一个行编辑器 。

就是我们编辑器 ， 我们现在的编辑器司空见惯的都是一次可以编辑很多很多行 。

**Rio** [11:47]
嗯哼 。

**吴涛** [11:47]
然后在当时 X 这个编辑器它只能编辑一次 ， 只能编辑一行 。 就是你打开文件 ， 打开一个文件 ， 你一次只能看到一行或者几行内容 ， 然后你所有的编辑都针对着几行完成 。

**Rio** [11:58]
嗯哼 。

**吴涛** [11:59]
对 ， 然后这是 1976 年写成的一个工具 。

**Rio** [12:03]
哈哈哈 。

**吴涛** [12:03]
对 ， 它是非常非常古老的一个工具 。

**Rio** [12:06]
对 。

**吴涛** [12:06]
对 ，V 就是在 EX 之后出现了一个工具叫做 V，也就是 VI。 呃 ，VI 出现的目的是把 X 的行编辑扩展到多行编辑 ，也就是我们现在能够看到的这种多行编辑器的一个命令行终端上的版本 。

**Rio** [12:30]
嗯哼 。

**吴涛** [12:30]
然后我们所使用的 Vim 呢 ， 又是一个 ， 呃 ， 荷兰程序员把原始的 VI 程序扩展之后， 改名叫做 ， 呃 ，VI improved， 然后， 呃 ， 一直维护到现在这么一个工具 。

所以我们其实讨论 Vim 的时候 ， 讨论是一组 Vim， 包括这个 Vim， 还有比如说 Macvim 这样在专门在 Mac 上面运行的 ， 或者是 Gvim 专门在 ， 呃 ，Xwindow 或者是 Gnome 下面运行的图形界面 ， 这些零零碎碎都可以算到 Vim 里面 。

**Rio** [13:05]
对 ，而且 Vim 还有一些后来的新的什么后继者吧 ， 比如最近比较火的一个叫做 ， 呃 ， 那个叫 NeoVim， 对吧 ？

**吴涛** [13:15]
对 ，NeoVim。

**Rio** [13:17]
它是把在 Vim 的 ，不过它也不是 ， 它是等于是重写了一遍了 。

**吴涛** [13:22]
呃 ， 我理解 NeoVim 的理念是 Vim 这个编辑器作为一个非常注重 ， 呃 ， 兼容性的代码库 ，有太多太多问题 ， 所以他们把里面比较重要的组件重写了一遍 ， 比如说把单元测试全都重写了一遍 ， 然后把 ， 呃 ， 应该是把 Vim Script 的解析器用 Lua 重写了一遍 。

然后与以此带来的 ， 呃 ， 改进就是整个代码库变得更易读了 ， 然后， 呃 ， 维护起来比较容易 。

因为我们知道 ， 呃 ，Vim 这个编译器虽然使用的人非常非常多 ，contributor 也非常非常多 ，但是其核心维护者其实只有一个人， 这个人就是 。

**Rio** [14:12]
原作者 。

**吴涛** [14:12]
Bram， 对 ， 原作者叫 Bram Moolenaar。

**Rio** [14:18]
不错 ，不错 。

**吴涛** [14:18]
他是一个荷兰 。

**Rio** [14:19]
荷兰名字 ， 荷兰语 。

**吴涛** [14:20]
荷兰名字 ， 对 。

**Rio** [14:22]
比较 。

**吴涛** [14:22]
他是一个荷兰人， 对 。 呃 ， 生于 1961 年， 现在在苏黎世做 Google 员工 。 我相信我 somehow 在苏黎世的街头见到过这个人 ，但是我不敢确定 。

因为 ， 对 ，因为如果你去 Wikipedia 上看他的词条的话 ， 就是他 ，他有一张非常知名的照片 ， 胸 ，他穿着一件胸前印着 slash code 的 slash。

**Rio** [14:42]
嗯哼 。

**吴涛** [14:43]
然后下面写个问号的黑 T 恤 ， 黑色 T 恤的 。 所以我 、 我对他的相貌还是比较有 、 比较有概念的 ， 所以那天也许我在苏黎世街头看到过他 ，但是不敢确定 。

**Rio** [14:54]
对 。

**吴涛** [14:54]
Anyway，他现在是 Google 的员工 ， 就是 Google 是一个聚集了很多这种神人的地方 。 之前 ， 呃 ，Python 的作者好像也在 Google 吧 ？

**Rio** [15:04]
现 、 现在已经去了 Dropbox 了 。

**吴涛** [15:06]
对 ， 现在已经 Dropbox 了 。

**Rio** [15:07]
对 。

**吴涛** [15:07]
Anyway， 这个人他是 Vim 项目的所谓 the single point of failure， 就是一旦这个人。

**Rio** [15:13]
挂了 。 呃 ， 如果 Bram 某一天出去街上被这个苏黎世的电车给撞死了 ， 那么 Vim 这个项目也就完蛋了 ， 估计 。

**吴涛** [15:24]
God forbid， 对 ， 千万不要发生这种事 。

**Rio** [15:27]
对 ，因为 、 因为有 、 有人去 ， 我没有看过哈 ，但是我之前有所耳闻 ， 就是看 NeoVim 那件事的事情 ， 就是 Vim 本身的代码库的写法是比较古怪的 。

**吴涛** [15:37]
对 。

**Rio** [15:38]
然后 。

**吴涛** [15:38]
它就是一个所谓 ， 呃 ， 逐渐生长起来的这么一个项目 ， 它不是一开始就有一个比较宏大的规划 ， 或者说在 、 在 、 在所谓 architecture 这一部分做得不是很好其实 。

**Rio** [15:52]
对 ， 就可你可以说它甚至是不是一个很优美的代码库这样 。

**吴涛** [15:57]
对 。

**Rio** [15:58]
啊 ，也是为什么 NeoVim 那帮人想着 ， 我靠 ， 这个没法忍了 ， 我们还是自己重 ，在另 ，他们之前也想提 ， 想给那个 Bram 提一个 patch，因为他好像这个还没有用那个分布式代码管理吧 ， 我记得 。

**吴涛** [16:11]
嗯 。

**Rio** [16:12]
啊 ， 反正想给他提个 patch， 然后就经常被拒掉嘛 ， 然后他就那算了 ， 我们自己搞一个好了 。 哦 ， 还有一个问题啊 ， 就是 Vim 这个代码库 ， 它兼容非常非常非常多的系统和平台 。

啊 ，而且这个这些所有的兼容代码都是他一个人在维护的 。 啊 ， 就 Bram 一个人在维护的 。 呃 ， 那么有些那种稀奇古怪的平台 ， 现在我估计很多人从来不是说没有见过 ， 可能听都没有听过 。

**吴涛** [16:40]
对 ， 什么 BEOS 或者是什么 。

**Rio** [16:43]
阿米 ， 呃 ，Omega 还是 Omega？

**吴涛** [16:46]
Omega。

**Rio** [16:48]
Omega。

**吴涛** [16:49]
反正有很多这种奇奇怪怪的平台 ， 至少我反正我觉得 ， 反正像我们这种新生代哈 ， 就是后 、 后面的什么不是六七十年代出生的那帮人是不知道那些系统是怎么长成的 。

**Rio** [17:02]
对 ， 就是可能就是在西欧某个国家的某个角落里面 ，有一个从 60 年代运行至今的系统上面必须要跑 Vim， 然后它就必须维护这一份代码 。

**吴涛** [17:11]
对 ， 然后就其实像很多像比如像 NeoVim 这种新兴的项目 ， 它就觉得哇 ， 那我为什么要花时间花精力去支持那么多可能地球上绝大部分人都根本没有听说过的那种平台或者系统呢 ？

啊 ， 就这也是一个就是减少代码量的一个办法吧 。

**Rio** [17:28]
没错 。

**吴涛** [17:29]
嗯 ， 对 。

**Rio** [17:30]
啊 ， 这里就刚才也就提到了 Vim 的一个优点啊 ， 就是所谓的 ubiquitous， 无处不在啊 。

**吴涛** [17:36]
对 ， 就你很有可能就是我们既然谈到了 Vim 和 Emacs 之间的圣战 ， 那基本上我们可以说 ， 现在就可以说出 Vim 的一个优点就是几乎你 ， 呃 ，有机会碰触到的任何一台 Unix 电脑 ， 类 Unix 电脑基本上都会有 Vim 的某种形式存在着 ，但是 Emacs 就不一定了 。

**Rio** [17:56]
对 ，而且 ， 呃 ， 之前我经常在导成这个 ， 呃 ，Linux 的路由器嘛 ， 还有很多这种所谓的 ， 呃 ， 就是精简版或者是嵌入式的系统里面 ， 你经常会发现它默认自带一个 ， 呃 ， 就是 V， 呃 ，Vi 或者是 Vim Tiny 这种超小型的 Vim 编辑器 ，不是全部特性都有的哈 。

啊 ， 然后但是 Emacs 这种是肯定找不到的 。

**吴涛** [18:21]
对 。

**Rio** [18:21]
所以它真的是无处不在 。

**吴涛** [18:23]
没有记错的话 ，Vi 应该是 POSIX 标准的一部分吧 ？

**Rio** [18:29]
啊 ？ 是吗 ？ 这个我还 。

**吴涛** [18:30]
好像是啊 ， 就是如果你要让你的系统符合 POSIX， 呃 ， 或者是就是 Emacs 过的那个叫什么 single Unix specification。

**Rio** [18:40]
嗯哼 。

**吴涛** [18:40]
那你的系统里面必须包含 VI。

**Rio** [18:43]
天哪 ， 这个 specification 也管得太多了吧 。

**吴涛** [18:46]
对 。

**Rio** [18:47]
Anyway。

**吴涛** [18:47]
好像这个还包括好像 PRO 也是一部分 。

**Rio** [18:51]
天 ，不要吧 ， 真的 。

**吴涛** [18:52]
对 ，anyway， 真的 ，不开玩笑 。

**Rio** [18:55]
OK，what。

**吴涛** [18:57]
但 Emacs 是不是我就不知道了 。

**Rio** [18:58]
感觉 、 感觉三观又被刷新了 。 所以 、 所以为什么 Vim 或者说类 Vim 的这种编辑器会这么的普及 ，而 Emacs 却没有呢 ？

这里有什么技术的原因啊 ？

**吴涛** [19:11]
我觉得主要的一个原因还是 Vi 或者说 Vim 其实它不是 ， 它不单单是一种编辑器 ， 它是一个 ， 它是一种语言 ， 就是它是一种 ， 它是一种思维方式 ， 你可以说 。

它是一种你告诉编辑器你想要做的事情的一个一套机制 ，而这套机制本身并不依 ，其实并不依赖于 Vi 或者是 Vim 所 、 所存在着 。

啊 ， 所以它也就被移植到了各种各样的地方 ， 比如说现在基本上任何稍微主流一点的编辑器里面都会有 Vi 或者是类 Vim 的 keybinding 可以选 。

**Rio** [19:52]
嗯哼 。 诶 ，但是这个如果这样说来的话 ，其实反而是 Emacs 那种 keybinding 会比较常见一点 ， 就是在非 ， 就在大部分的编辑器里面 。

比如像之前我们已经聊到了哈 ，在这个 Mac 上面 ， 大部分的文本输入框是自带一些基本的 Emacs 的这个 keybinding 的 。

**吴涛** [20:10]
不 ，但问题在于比如说你说 Eclipse。

**Rio** [20:13]
嗯哼 。

**吴涛** [20:14]
Eclipse、Eclipse 或者是 、 或者是那个 NetBeans 之类的 IDE 里面是不会有 Emacs 的 keybinding 的 。 但是 Vim 的 keybinding 肯定会有人实现出来 。

**Rio** [20:28]
嗯 ，

这个有点意思啊 。

**吴涛** [20:32]
对 ， 这其中原因我觉得就是因为 Vim 本身是一种语言 。

**Rio** [20:36]
对 ， 这里要 ， 可能不是很多人都用 ， 或者说是学了一下但是没有坚持到底啊 ， 就是 Vim 的它的魅力或者优势在哪里 ？

就刚才你讲了它有一个 、 一个所谓的这个 ， 呃 ， 语言这里 ，但我们待会会解释这个语言是什么样的哈 。

然后另外一个特点就是所谓的这个模态这一点哈 。 所以 。

**吴涛** [20:57]
对 ， 这两者其实是相辅相成的可以说 。

**Rio** [21:00]
我们先讲哪一个 ？

**吴涛** [21:02]
呃 ， 对 ，其实现在就可以解释一下了 ， 到底为什么 ， 或者说首先解释一下为什么 Vim 为什么这么难 ， 或者说怎么样才能让 Vim 变得不那么难 。

**Rio** [21:12]
嗯 。

**吴涛** [21:12]
就是你要 、 你要先理解一个概念 ， 就是 ， 嗯 ， 或者说你要从自己的使用习惯之中观察出一个概念来 。

**Rio** [21:21]
嗯哼 。

**吴涛** [21:22]
也就是 ， 嗯 ， 你最终写出来的文本里面 ， 你是看不到任何 ， 呃 ， 移动光标或者修改的痕迹的 ， 对不对 ？

**Rio** [21:34]
对 ，因为那个是撰写的过程嘛 ， 跟最终的产品是没有关系的 。

**吴涛** [21:39]
也就是说当我们在写一篇文章的时候 ， 我们按下一些键的时候 ， 所达成的目的是让这些键所代表的字符成为最终文章的一部分 。

这是一种状态 。

**Rio** [21:53]
嗯 。

**吴涛** [21:53]
而另一种状态呢 ， 比如说我们按方向键或者是按 page up、page down， 乃至是按 home end 的时候 ， 呃 ， 意图在于去改变我们刚刚以第一种状态所写下的文章 。

这是第二种状态 。 也就是说我们其实在写文章的时候已经在两种状态之间切换来切换去了 ， 只不过在如果你没有意识到这一点的话 ，在你看来两者其实都是在按键 ， 只不过有些键做这种事情 ，有些键做那种事情而已 。

那么 Vim 它的难点 ， 或者说它所抽象出来的一套概念就是 ， 呃 ， 既然你有两种状态 ， 那我就明确定义两种状态好了 。

那么 Vim 就明确地区分出了两种 ， 或者说严格意义上是三种模式 。在其中一种模式下， 你所写的一切内容 ， 你所 、 你在键盘上敲入的一些内容 ， 都会成为呈堂证供 ， 或者说都会成为最终出现在文档之中的文字 。

**Rio** [22:58]
嗯哼 。

**吴涛** [22:59]
而在另外一种模式之下呢 ， 呃 ， 你可以告诉编辑器你想要干什么 ， 比如说编辑器我想要删掉我写下来我光 、 我处于我光标右侧的三个单词 。

**Rio** [23:11]
嗯哼 。

**吴涛** [23:12]
或者说编辑器我想要删掉我现在这一行以及上面那一行 ，以及再上面那一行的 ， 呃 ， 刚刚敲入输入的代码 。

或者说编辑器我想要 ， 呃 ， 让现在的用双引号引起来的这一句话改变成单引号 。

**Rio** [23:31]
对 。

**吴涛** [23:31]
诸如此类 。 那么这种模式呢叫做普通模式 。 然后还有第三种模式叫做命令模式 ，但是它目前来说不是很重要 。

我们就是比较 、 比较重大的难点对于 Vim 的初学者来说就是为什么要出现普通模式和编辑模式之间的区别 。

**Rio** [23:51]
嗯哼 。

**吴涛** [23:52]
对 。 那么反过来想 ， 嗯 ， 如果你能适应这一点的话 ， 那么在普通模式之下， 你可以以非常快的速度以一种非常特别的 ， 呃 ， 语言 ， 就是加引号的语言来告诉 Vim 你想要干什么 ， 然后 Vim 可以很快地替你完成这些事情 。

比如说假如说你换用别的编辑器 ， 比如说用 Notepad， 然后你要删掉接下来的三个单词 ， 你可能是 ， 你可能 、 你可能会怎么做呢 ？

按住 Delete 键不放 。

**Rio** [24:26]
嗯哼 。

**吴涛** [24:27]
或者是按住 Shift 选中三个单词 ， 然后按一次 Delete 键 。

**Rio** [24:31]
对 。

**吴涛** [24:32]
但是在 Vim 的模式之下， 你只需要告诉编辑器说 。

**Rio** [24:36]
删除三个单词 。

**吴涛** [24:38]
对 ，D3W。

**Rio** [24:40]
对 。

**吴涛** [24:40]
就是你按 D 键 ， 然后按 3 键再按 W 键 ，也就是 Delete three words。

**Rio** [24:45]
对 。

**吴涛** [24:45]
然后 Vim 就会替你删掉光标右侧的三个单词 。

**Rio** [24:49]
对 ， 所以这里就是有一个刚才你讲的那个 ， 所谓这个 Vim 的操作语言哈 ， 就是我们刚才你看到这个 ， 它是有一个所谓的 ， 啊 ， 就动作 ， 然后， 呃 。

**吴涛** [25:00]
量词 。

**Rio** [25:01]
量词 ， 然后再加这个所谓宾语的结构嘛 。

**吴涛** [25:04]
对 。

**Rio** [25:04]
就是一个简单的 、 比较简单的 ，但是主语默认就是你自己 ， 这个就不用讲了 。 啊 ， 啊 ，也是正是因为这套语言使得 Vim 在起码在我们这种铁杆粉丝的角度看来 ， 它的编辑的效率是非常高的 。

因为刚才你讲 ， 呃 ， 那个问题其实没有回答哈 ， 就是为什么 Vim 会区分这个所谓的 ， 呃 ， 这个编辑或者叫做专业的术语叫做插入模 、 什么 insert mode 和这个 ， 呃 ， 命令 ， 就刚才你讲的这个在 Vim 里面专业术语叫做 normal mode 普通模式 。

呃 ，其实我觉得这里有个 ， 啊 ， 上次我也在跟 Lawrence 讨论这个问题啊 ， 就是说写程序和写普通的文章有一个很大的区别 ， 我觉得就是可能写程序的时候 ， 你更多的时候不是在真的在写 ，而更多时候在读你之前写过的程序 ， 然后再做一些 ， 呃 ， 轻度的修改 。

**吴涛** [25:57]
对 ， 或者说写程序的 80% 的时间是在改 。

**Rio** [26:00]
对 ，是在读 。

**吴涛** [26:02]
是在不停地调试 ，是在不停地更正你脑海中之中的这个运算模型 。

**Rio** [26:07]
对 。 哎 ，不过这样说其实也不太对 ，因为我知道很多文章写出来也是要经常改的哈 ，但是 ，但是 。

**吴涛** [26:13]
对 ，但我不知道你怎么样 ，但至少我在写文章的时候会有那种 ， 就是写到在 zone 里面的时候会有那种行云流水的感觉 。

**Rio** [26:20]
就一气呵成 ，不会要跳来跳去 。

**吴涛** [26:22]
就会一次写很多很多很多很多字 ， 就很少 ， 基本上基本上修改会集中在一个阶段里面改 ，但是写程序就很少这样 。

**Rio** [26:31]
对对对 ，而且就是我觉得刚才我也讲了嘛 ， 写程序更多就是我们所谓的写程序 ， 更多的时候你是在翻出你之前 ， 呃 ， 写过的程序或者是别人之前写过的程序 ， 然后你再 、 再去做一些阅读啊 ， 做一些小的调整而已 ，并不是真的你每次都在从头到尾去叫做 write from scratch 嘛 ， 重新从头到尾完完全全地写一个新的程序出来 。

这种事情是 、 这种时候是相当 、 相当少的 。

**吴涛** [26:54]
对 。

**Rio** [26:55]
所以 、 所以就是为什么在 Vim 里面你如果不做任何处理 ，不做任何特别的配置的话 ， 你进到里面去 ， 它默认的那个模式叫做是那个刚才你讲的这个所谓的命令模式 ， 就是 ， 呃 ，normal mode。

**吴涛** [27:08]
普通模式 。

**Rio** [27:08]
对 ， 普通模式 。 而且 ， 呃 ， 对于一个 ， 就对于一个日常的 Vim 的用户来讲 ，他也应该把绝大多数的时间花在这个普通模式里面 。

**吴涛** [27:20]
对 。 那反过来就是在 Emacs 下面 ，其实也可以意识到当你打开 Emacs 之后， 你基本上你会下意识地按住 Control。

**Rio** [27:31]
嗯哼 。

**吴涛** [27:31]
然后去做一些事情 ， 就是 ， 呃

，在你不会一上来就写什么东西 ，在这个至少你要做的一件事情是移动光标 ， 把光标插入到 、 移动到你想要插入文字的部分 。

**Rio** [27:46]
对 。

**吴涛** [27:46]
然后才会开始编辑吧 。

**Rio** [27:48]
对对对 。

**吴涛** [27:49]
对 。 那么在 、 在 ， 呃 ，在 Emacs 或者说任何一种其他不区分 、 不明确区分模态的编辑器里面 ， 呃 ，在你会 、 你还是会有大量的时间花在这种移动光标或者是删除某个单词或者删除某一行的这种需求之下 。

而 Vim 的出发点或者它的设计要素就是把这样一个抽象的级别把它实体化了 ， 把它你可以明确地告诉 ， 呃 ， 编辑器我现在要切换到那种模式 ， 然后你可以一直保留在那种模式之下 。

**Rio** [28:25]
对 ， 或 、 或者说你这么理解就是在 Emacs 里面你 、 你采用快捷键的时候 ，其实你是已经在短暂的时间内进 ， 就是在快捷键按下这个过程中哈 ， 你已经在极短的时间内进入了某一种模式里面 ， 然后再在那个模式去进行一个指定的操作 。

而 、 而此时你并没有在 ， 呃 ， 真正地插入或者是撰写某一个文档 。

**吴涛** [28:48]
对 。 而 Vim 的所谓编辑模式和 ， 呃 ， 命令模式之间的差别就在于 ， 就好像 、 就相当于你 ， 呃 ， 找到什么东西 ， 找到一本书压住了你的 Control 键 。

**Rio** [29:01]
哈哈哈 。

**吴涛** [29:02]
这个时候 ， 对 ， 这个时候你按键盘上的任何一个字母你 。

**Rio** [29:05]
你都是在执行快捷键 。

**吴涛** [29:07]
对 ， 你都是在做一个 、 做一种 、 做一种 ， 嗯 ， 下 、 给出命令而不是书写字母的行为 。

**Rio** [29:15]
嗯哼 。

**吴涛** [29:15]
也就是比如说 ， 呃 ， 比如说 F， 那假如你的 Control 键一直被按住了 ， 那么那你敲一下 F， 你所要做的事情是要是搜寻什么东西 。

**Rio** [29:25]
嗯哼 。

**吴涛** [29:26]
那么在 Vim 里面 ， 呃 ， 当你切换到普通模式之后， 你只需要按一下 F 键 ， 你所 、 你就可以去找你要找的某一个字符 。

**Rio** [29:35]
对 。 啊 ，不过有一个可能在 ， 就是在术语上有个可能比较容易混淆的地方 ， 就是其实在 Emacs 里面也有 mode 这个概念哈 。

**吴涛** [29:45]
对 ，但 Emacs mode 指的是完全不一样的什么东西 ， 比如说 ， 嗯 ， 呃 ，Vim， 呃 ， 比如说 Emacs 它打开一个 LaTeX 文件 ， 它会进入所谓 LaTeX mode。

**Rio** [29:59]
嗯哼 。

**吴涛** [30:00]
那这个 mode 其实就相当于 ， 嗯 ， 如果你是 Vim 一个 Vim 使用者 ， 你对 Emacs 不是很熟 ， 那我们两个对 Emacs 都不是很熟 ，但 ， 呃 ，而 Emacs mode 其实对于 Vim 来说就相当于 Vim 的 file type。

**Rio** [30:13]
对 。

**吴涛** [30:14]
就是 ， 呃 ， 针对某一种特别的文件类型 ， 或者说针对某一种特别的编辑状态而激活一种模式 。

而这个跟 ， 呃 ，Vim 的所谓 mode 其实是完全不同的两个概念 。

**Rio** [30:29]
对 。 所以就是就是从刚才讲到就是 Emacs 的 mode 其实大约略等同于 Emacs 的 ， 呃 ，不 ，Vim 的叫什么 FT plugin 这个东西 。

**吴涛** [30:40]
对 ，file type plugin。

**Rio** [30:42]
对 。

**吴涛** [30:43]
然后， 呃 ， 对 ， 我们 、 我们是接着说 Vim 的问题呢 ， 还是就是每一个点都尽量对照两种编辑器来说 ？

**Rio** [30:53]
嗯 ， 这还是对照一下吧 ，因为这个本来就是回顾这个圣战嘛 ， 我们还是要把最基本的那些要点大概理一下 。

**吴涛** [31:01]
对 。 那其实那这种模态的区分也就导致了 Vim 如此难学 ， 或者说很多人会觉得 Vim 是一种非常非常奇怪的编辑器的一个原因之一 。

**Rio** [31:12]
对 ，因为他觉得他 ， 我觉得他是不够 ， 就是或者很多人觉得他不够直观嘛 ， 就是因为这个模态 。

我 、 我想不出在生活中有什么样的地方是有模态这个概念的 。

**吴涛** [31:23]
对 ，因为键盘其实是一个非常奇怪的 、 奇怪的输入工具 ， 如果要我说的话 。

**Rio** [31:30]
嗯哼 。

**吴涛** [31:30]
呃 ， 如果你把键盘上所有的功能键拿掉 ， 呃 ，Control、Alt、Command、 呃 ，Escape， 乃至所有的 F 键都拿掉的话 。

**Rio** [31:40]
嗯哼 。

**吴涛** [31:41]
嗯 ， 你要怎样才能改变光标的位置呢 ？ 就方向键要拿掉 ， 或者说你要怎样去检查找这个 。

**Rio** [31:53]
就是没有这种功能键 ， 只有这个字母键或者字符号键的时候怎么去操作 。

**吴涛** [31:57]
如果你的 ， 对 ， 如果你的键盘只能插入的话 ， 你应该怎样修改你的内 、 你的你屏幕上的内容呢 ？

**Rio** [32:04]
哈 。

**吴涛** [32:05]
就如果就假如说其中的一种解决方式是 touch screen。

**Rio** [32:10]
嗯哼 。

**吴涛** [32:10]
那么我们是不是可以理解为在 。

**Rio** [32:14]
或者鼠标嘛 ， 用鼠标去移动的时候 ， 你是在进入一种另外一种模态里面 。

**吴涛** [32:21]
对 ， 或者说你面对的是一台 、 是一部 、 是一个 touch screen， 那么你可以用手指去点你要改的那个文字 。

**Rio** [32:28]
嗯哼 。

**吴涛** [32:28]
然后选中它 ， 然后再在你的键盘上面改 。

**Rio** [32:31]
嗯哼 。

**吴涛** [32:32]
那么这一种情况是不是存在呢 ？ 其实已经存在了 ， 就是你在你在你的手机上去修改什么东西的时候 。

**Rio** [32:38]
嗯哼 。

**吴涛** [32:39]
你要选中一个文字 ， 你所做的事情并不是按住 Shift 键然后选方向键 ，因为手机键盘上反正也没有方向键 ， 对吧 ？

**Rio** [32:48]
哈哈哈 。 对 。

**吴涛** [32:49]
你要用手去点那个字母 ， 按住 、 松开 ， 然后这个字 、 这个单词被选中了 。 那其实在你移动手指到键盘上和你移动手指到你要选的那个单词之间 ， 你已经在做这种切换了 。

**Rio** [33:04]
嗯哼 。

**吴涛** [33:04]
只不过你不会 ， 你会觉得这个这种切换非常自然 。 但是当一个编辑器跳出来告诉你说 ， 哦 ， 你要明确地告诉我你要处于哪一种状态之中的时候 。

**Rio** [33:14]
嗯哼 。

**吴涛** [33:15]
你可能就不习惯了 。

**Rio** [33:17]
对 。

**吴涛** [33:17]
啊 ，不过就像你说的 ， 现实生活中好像是没有一种 、 没有一种非常明显的会切换状态的 ， 嗯

， 呃 ， 我只 、 我唯一能想到的例子就是游戏 ， 比如说 ， 比如说有些游戏里面 ， 嗯 ， 早期的命令与征服 。

**Rio** [33:39]
嗯哼 。

**吴涛** [33:39]
你在战略地图上可以选择接下来要打北非的什么地方 。

**Rio** [33:44]
嗯哼 。

**吴涛** [33:45]
而你选择之后才开始关卡 ，在这个关卡里面你才会去真正地进行这场战争 。

**Rio** [33:51]
嗯哼 。

**吴涛** [33:52]
也许这是一个类 、 可以 、 可以 、 可以类比的模式 ，但其实还是差得挺远的 。

**Rio** [33:58]
对 ， 我就 、 我就觉得这个是模态这个概念啊 ， 始终对于初学者来讲很大的门槛 ， 就是因为它没有在现实生活中有一个可以所谓可以隐喻的一个东西嘛 。

**吴涛** [34:10]
对 ，但其实这也就是为什么很多人说 VI 是一种比较 、 比较社群化的编辑器 ， 就是如果你身边没有人在用 VI， 然后你 。

**Rio** [34:22]
很难入门的呀 。

**吴涛** [34:23]
你也很难入门 。

**Rio** [34:24]
嗯 。

**吴涛** [34:25]
对 ， 基本上大部分学 VI 的人都是在某种机缘巧合之下看到了某一个人在用 ， 发现这个人修改文章的速度像飞一样 。

**Rio** [34:36]
哈哈哈 。

**吴涛** [34:37]
然后会惊讶地说这是什么编辑器 。

**Rio** [34:39]
哈哈哈 。

**吴涛** [34:40]
然后那个人说 ， 用神圣的语言 ， 用神圣的腔调说这是 Vim。

**Rio** [34:44]
哈哈哈 。

**吴涛** [34:45]
然后说我也要学 。

**Rio** [34:47]
哈哈哈 。

**吴涛** [34:47]
对 ， 然后才会渐渐入门 。

**Rio** [34:49]
啊 ， 所 、 所以 ， 所以啊 ，其实你可以当我们也看到了啊 ，Vim 这种方式其实非常叫做什么 ，不 Newbie friendly 哈 。

**吴涛** [34:58]
对 。

**Rio** [34:59]
啊 ，也有一些尝试在改变这么一个 、 一个状况 ， 就是先所谓的先把你骗进来再讲 。 所以现在有那个 ， 特别是在我记得在 ， 呃 ， 就现在 Vim 的正式的版本里面有一个叫什么 ， 就是什么初学者模式吧 ， 就它默认是禁用掉这个模态的这个 、 这个行为的 ， 就是你进去始终都是编辑状态 。

**吴涛** [35:21]
嗯哼 。

**Rio** [35:22]
然后但是我自己是没有 、 没有 、 没有用过那种方式 ， 我也不知道 。

**吴涛** [35:26]
对 ， 我也 ， 对 ， 我们都 、 我们都太晚了 ， 没有赶上这种 user friendly 的时代 。

**Rio** [35:31]
对 ， 就这个就这个就好像说你 、 你要 ， 就我不知道那个的意义何在哈 ， 当你可以把初学者领进来 ，但是你并没有让他认识到这个模态的啊 ， 本质在哪里 ，其实好像也没有什么太大用处 ， 就是这样变得和另外一个普通编辑器也没有什么区别了 。

**吴涛** [35:48]
嗯哼 。 那你说起来你是怎么开始用 VI 的 ？

**Rio** [35:52]
哈 ， 这个问题我已经不太记得了 。 我是在上上大学的时候在学 、 在开始学用这个 Vim 的 。 然后那个时候很奇怪哈 ，因为我 、 因为我大学是读商科的嘛 ，其实也没有什么编程的需求 。

**吴涛** [36:10]
嗯哼 。

**Rio** [36:11]
但我也想不出我为什么会在学它 。 哼 。

**吴涛** [36:15]
你有看到你是像我说的那样看到有人在用 ， 然后被它勾引入门的吗 ？

**Rio** [36:20]
应该是我有看到过某一个什么书或者某一个人怎么样在用 ，但是我现在想不起来这个 、 这个过程是怎么一回事 。

**吴涛** [36:28]
OK。

**Rio** [36:29]
啊 ，不过 、 不过可能跟这个 、 可能跟这个什么 personality 的这些有 、 有一点关系哈 ， 就在相当长一段时间内我也是个有一个人格上的缺陷 ， 就是我会去 、 去如果有一 、 有一堆同类或者做同样事情的东西 ， 我一定要选出一个最好的 。

啊 ，不是 ， 就比如说现 、 现在你就格板 ， 如果现在我啥也不知道 ， 你现在摆了两个编辑器在我面前 ， 我一定要比较 ， 哎 ， 这两个编辑器哪个好 ，但这个最好是就带引号的 ， 就是对于个人来讲我觉得是最好的 。

然后我就 。

**吴涛** [37:00]
就是你一定要找出一个适合你自己的 。

**Rio** [37:03]
对 ， 我一定 、 我一定要分出来一个 ， 分出来一个我觉得 ， 哎 ， 这个 、 这个比那个更加适合我 ， 或者就在我定义里面这个是更好的 。

啊 ， 当时就出现这么一个状态 ， 就是其实我是在 Vim 和 Emacs 两边就是都还摇摆了一段时间 ， 后来觉得感觉 Vim 这种方式比较 、 比较好 ， 然后我觉得就后来就选了 ， 就一直在 、 在用 Vim， 现在就算是一个所谓的什么终极用户吧 。

**吴涛** [37:26]
所以你是在有对比的前提之下习惯了 Vim， 或者说选择了 Vim？

**Rio** [37:33]
嗯 ， 对 。

**吴涛** [37:35]
OK， 这个哦 ， 我的经历几乎不一样 ， 就是 ， 呃 ， 我在最开始接触到 VI 的时候完全不知道 Emacs 是什么 。

**Rio** [37:45]
OK， 所以 、 所以你是在一个无知的情况下选择了 Vim。

**吴涛** [37:49]
对 ， 我记得那是我就是可能初中毕业还是什么时候 ， 就 、 就又暴露年龄了 ， 你又可以说你 、 你 、 你年轻嘛 。

对 ， 反正就是在中学 ， 当我还是一个中学生的时候 ， 我买了一本 ， 呃 ，Unix 呃 ， 命令手册之类这么一本书 。

因为那个时候装了 Windows 和 Linux 的双系统 ， 那个时候 Linux 刚刚进入中国 ， 就我记得装的是什么 Slackware 还是什么 ， 就是现在几乎没有在碰的一个发行版 。

**Rio** [38:21]
嗯哼 。

**吴涛** [38:22]
呃 ， 然后迫不及待去学命令 。

**Rio** [38:25]
嗯 。

**吴涛** [38:26]
嗯 ，在这本命令手册里面有那么别的命令 ， 大概就是那么四五行 、 五六行 。

**Rio** [38:33]
嗯哼 。

**吴涛** [38:34]
然后讲这个命令能干嘛 ， 然后给你两个例子 。

**Rio** [38:37]
嗯哼 。

**吴涛** [38:38]
而 VI 的 ，而轮到 VI 这个命令的时候 ， 这个 、 这个命令手册大概写了 。

**Rio** [38:43]
一本书 。

**吴涛** [38:44]
四五页 ， 对 ， 四五页 。 我说 what the hell， 这是什么东西 ？ 它只是一个编辑器而已 ， 至于吗 ？

**Rio** [38:50]
嗯哼 。

**吴涛** [38:51]
然后， 呃 ， 用起来用了一段 ， 就刚开始用的时候也觉得匪夷所思 ，但是大概过了两三个星期 ，有那么一个就是所谓的 Eureka moment， 就是啊 ， 我 、 我明白了这么一个 。

**Rio** [39:05]
顿悟 。

**吴涛** [39:05]
顿悟的时刻 ， 对 ， 顿悟了 ， 然后啊 ，也就从此一直用它 。

**Rio** [39:11]
天呐 ， 你 、 你 、 你初中就在看 Unix 的书 ， 你当时在哪里 ？

**吴涛** [39:16]
在天津啊 。

**Rio** [39:17]
OK， 所以大城市还是好 ， 你看像我们那种我家乡那种 。

**吴涛** [39:21]
不不不 ， 我是天津城乡结合部的 。

**Rio** [39:23]
那也比我们那种特地的偏远地区要好啊 。

**吴涛** [39:27]
好吧 ， 你太谦虚了 。

**Rio** [39:28]
嗯 。

**吴涛** [39:28]
在那个时候没有互联网啊 ， 就基本上所有的发行版 ， 或者有话会有互联网 ， 存在有拨号的 ， 然后有发行版 ， 用 Linux 发行版存在 ， 基本上一定要去 ， 呃 ， 就类似于五道口 ， 或者是就天津市类似于五道口的地方去淘才可以找到的 。

**Rio** [39:43]
OK。

**吴涛** [39:44]
对 。

**Rio** [39:44]
呃 ， 那个时候是已经是中文版还是英文版 ？

**吴涛** [39:48]
呃 ， 那个时候没有中文版的 Linux， 就那个啊 ， 我记得有 、 有一个中文版 Linux 叫什么红旗 Linux。

**Rio** [39:54]
哈哈哈 ， 对 ，有确实有这么一个东西 。

**吴涛** [39:58]
是有这么一个东西 。

**Rio** [39:59]
好像还在 ， 好像还在 。

**吴涛** [40:01]
真的吗 ？

**Rio** [40:02]
好像我上次 。

**吴涛** [40:03]
Oh my god。

**Rio** [40:03]
见到 ， 我忘了 ， 还是已经转型了还是怎么 ， 我对这个我才不太清楚 。

**吴涛** [40:07]
我不知道 ， 对 ，但那个时候我也 ， 我可能是出于某种 ， 嗯 ，因为你用过 DOS 吗 ？

**Rio** [40:16]
肯定用过啊 。

**吴涛** [40:17]
对啊 ， 所 、 所以你也不是很年轻嘛 。

**Rio** [40:20]
哈哈哈 。

**吴涛** [40:20]
你知道真正 、 真正年轻的人认为啊 ， 电脑开机就应该自动显示那个 Windows 的桌面 ， 然后和一个指针的 ， 如果那个跳出来一个 C 冒号斜 、 呃 ， 反斜杠大于号 ， 然后一闪一闪的光标 ，他会觉得电脑坏了 。

**Rio** [40:37]
对 ， 那确实对大多数人来说那个时候就是啊 ， 搞不定了怎么办 ？

**吴涛** [40:42]
对 ， 那么以电脑以命令行入门的人来 ， 就是对于以命令行时代入门电脑的人来说 ， 好像再学另外一个命令行是很自然的事情 。

**Rio** [40:54]
处理庞通嘛 ， 我觉得这个这个应该是 。

**吴涛** [40:56]
对 ，但现在好像已经你已经很难 ， 你甚至可以找到一种人， 就是他只会用图形化界面来编程 。

**Rio** [41:03]
大多数 。

**吴涛** [41:04]
如果切换到 。

**Rio** [41:05]
用图形化的方式来编程 。 啊啊啊 。

**吴涛** [41:07]
就是在图形在一个在一个 。

**Rio** [41:09]
Windows 开发者大部分都这样吧 。

啊 ， 就首先有一个 G 和大的问题 ，因为 Windows 上面并没有一个好用的命令行 ， 或者是你用了命令行也干不了太多事 ，但现在它有那个什么 PowerShell， 那个是另外一回事 ， 就在相当长一段时间内是这样子的 。

**吴涛** [41:26]
呃 ， 对 ， 应该或者说你不能说 ， 我觉得你不能说就是我不是为 Windows 程序员证明 ，但你这个在这一点上也许是因为绝大多数人在学习编程的时候接触到的操作系统是 Windows。

**Rio** [41:44]
嗯哼 。

**吴涛** [41:45]
你不能因此说大多数 Windows 程序员都只会在图形界面下编程 。

**Rio** [41:51]
不是 ， 我就说它因为 Windows 上没有一个好用的命令行界面嘛 ， 就说就命令行的这么一个接口 ， 那你也不能拿它干嘛 ， 对吧 ？

**吴涛** [41:58]
OK。

**Rio** [41:59]
Yeah。

**吴涛** [42:00]
Whatever.

**Rio** [42:02]
对 ， 我们这次 ， 我们这一次的 Framework 主题还是编辑器之战 ，而不是操作系统之战 。

**吴涛** [42:07]
下次 。

**Rio** [42:08]
哈哈哈 ， 对 ， 下次 。

**吴涛** [42:10]
对 ， 回到呃 Vim 的 ， 我们刚才讲了 Vim 的操作模式 ， 对吧 ？

**Rio** [42:17]
对对 。

**吴涛** [42:17]
那么除了模态编辑模式是一个巨大的门槛之外， 还有什么门槛呢 ？ 或者说还有什么点让你觉得 ， 或者说你会觉得 Vim 是非常不平行人的一个地方 ？

的一种工具 。

**Rio** [42:30]
就是它的那个配置和就是所谓的扩展 ， 就是它有一个叫做语言嘛 ， 叫做 Vim Script。 啊 ， 我觉得这个语言是相当古怪的 ， 就哪怕以现在的 ，不不管以现在还是古代的观点来说 ， 我觉得它的语言这个这门语言都是挺奇怪的 。

**吴涛** [42:48]
对 ， 最最简单的 ， 最简单的从审美的角度讲 ，Vim Script 是一种非常丑陋的语言 。

**Rio** [42:56]
对 ， 这个点这一点和 Emacs 有非常大的区别哈 ，Emacs 有一个非常优美的 Lisp 的语言作为它的基础 。

### Emacs宇宙

**吴涛** [43:04]
对 。

**Rio** [43:05]
啊 ， 甚至 。

**吴涛** [43:05]
而且 Emacs。

**Rio** [43:06]
甚至你都可以说 Emacs 它并不是一个编辑器 ， 它就是用这个叫什么 Elis、Elisp 写的一个叫什么操作系统 。

**吴涛** [43:18]
对 ， 就有一句很知名的话说 Emacs 是一个操作系统 ， 它只是偶尔能被用来修改文字 ，而 V、 而 V 则是一个基本上只能修改文字的这么一个小工具而已 。

**Rio** [43:33]
对啊 ， 我觉得为什么这么讲呢 ， 就是刚才讲的那个 Vim Script 这门语言首先是比较古怪的 ， 然后它的整个就它它不光是语法古怪啊 ， 它整个这种编程的就是整个这个编这个这个这个运行环境也是比较受限的吧 ， 相对于那个 Emacs 那个 Elis、Elisp 而言 ，因为 Elis 它的那个自由度和灵活度 ， 就不管是从这个语法的角度来讲 ，因为如果你知道 Lisp 是什么的

话 ， 那你就知道大概会是什么一个状况 ， 然后它的这个啊 ， 就是可以供你修改或者是改呃扩展的部分也是非常庞大的啊 ， 这样导致一个结果就是 Vim 很多人就是拿来只是做一个比较简单的编辑工具 ，是所谓的小儿专嘛 ， 然后 Emacs 就很多人来扩展来做奇奇奇奇怪怪的事情了 ， 比如说有人来用 Emacs 来写聊天程序啊 ， 网页浏览器 ， 当然是文字版

本的哈 ，而且可以插图 ，其实也可以插图的 。

**吴涛** [44:33]
对 ， 我在做功课的时候还在 Quora 上看到了一个人演示如何在半个小时之内用呃 Elis、 呃用 Elis 来写一个那个 Spotify 的 client， 就你可以在它可以在 。

**Rio** [44:48]
放音乐是吧 ？

**吴涛** [44:49]
对 ， 它可以在 Emacs 里面搜索 Spotify 上那首歌 ， 然后在 Emacs 里面告诉 Spotify、Spotify 把这首歌放出来 。

**Rio** [44:55]
对啊 ， 天 ， 就是还可以还可以写游戏 ， 所以所以你知道这样它的这个作用领域就完全不仅仅是一个编辑器那么简单了 。

**吴涛** [45:06]
对 ，Emacs 对于很多 Emacs 用户来说是一个开机之后不管有事没事先打开的一个工具 。

**Rio** [45:13]
对 。

**吴涛** [45:13]
但是在 VI 在 Vim 用户里面很少会看到这种现象 。

**Rio** [45:16]
所以他们其实并不需要管是什么样的操作系统 ， 它都是一个虚拟机而已 。

**吴涛** [45:22]
对 ，不管怎么说 ， 我先我先打开就是了 。

**Rio** [45:24]
对 ， 打开 Emacs 之后其他的底层系统就已经无所谓了 。

**吴涛** [45:29]
对 ，其实这也就导致就是说在使用 VI 的时候 ， 你不得不大量的去利用外部工具来完成呃 VI 或者 Vim 本身不支持的一些功能 。

**Rio** [45:42]
对 。

**吴涛** [45:43]
而在 Emacs 里面 ， 你基本上可以永远待在 Emacs 里面 。

**Rio** [45:46]
嗯 ， 对 ， 比如说这里说一个我最我个人最常用的一个状况嘛 ， 就是因为我做的很多都是服务器端的东西 ， 那么需要去远程调试 ， 对吧 ？

然后远程调试的话要通过命令行 ， 比如说 SSH 登录过去啊 ，但显然至少到目前为止我并没有发现在 Vim 下面有一个可以就是嵌入到 Vim 里面的这么一个终端的一个插件 ， 对吧 ？

啊 ， 所以我还是得一边开一个这个 Vim 编辑器的窗口 ， 然后一边再开一个这个终端的这个窗口去去去做这个操作 ，但这点我发现在 Emacs 上面就完全不一样 ，Emacs 就是直接全屏是一个 Emacs 的窗口 ， 然后里面再画出一部分来做一个终端的插件 ， 然后这样登录去操作这样 。

**吴涛** [46:31]
对 ，在开 Vim 的时候 ， 你很少有说所有的工作都在 Vim 里面完成的这样一种情形存在 。 嗯 ，但反过来在 Emacs 里面基本上进去就不需要再出来 。

**Rio** [46:45]
哈哈哈 。

**吴涛** [46:46]
对 ， 甚至就是甚至我在呃找例子的时候找到了这么一个呃场景 ， 就是有一个有一个应该是在实验室工作的人 ，他说呃在 Emacs 上面 ，因为 Emacs 支持在支持 XWindows 系统 。

**Rio** [47:06]
嗯哼 。

**吴涛** [47:06]
然后它可以同时连接到多个 XServer。

**Rio** [47:09]
嗯哼 。

**吴涛** [47:10]
然后它可以做到这样一件事情 ， 就是呃你它在办公室里面开一台电脑 ， 然后在实验室里面又有几台电脑 。

**Rio** [47:16]
OK。

**吴涛** [47:17]
它可以在办公室里面打开一个 Emacs， 然后远程告诉实验室里面某一台电脑上面的 XWindows。

**Rio** [47:25]
嗯哼 。

**吴涛** [47:26]
呃 Server 出现请出现一个 Emacs 窗口 。 它做完它在办公室做完这件事情之后走到实验室 。

**Rio** [47:34]
嗯 。

**吴涛** [47:36]
做实验 ， 然后就可以转身在实验室的电脑上 ，在它刚刚打开的那个办公室 Emacs 的窗口里面输入数据 。

**Rio** [47:45]
嗯 。

**吴涛** [47:45]
我觉得这是一个非常对 ， 这是一件非常匪夷所思的功能 ，但 。

**Rio** [47:50]
所以所以你看你看这个 。

**吴涛** [47:52]
Emacs 就是可以做到 。

**Rio** [47:52]
但其实你是看它这样就是或者说 Emacs 用户在很多年以前就已经实现了现在苹果所谓的那个叫什么 continuity 的功能了 。

**吴涛** [48:02]
对 ，handover 这不就是 。

**Rio** [48:04]
对啊 。

**吴涛** [48:04]
对 ， 虽然还是有一个人工干预的呃对 hand off，在人工有虽然有一个人工干预的过程 ，但它已经在那了 ， 就是如果你懂得怎么用的话 ， 你是可以实现的 ，而且很快 。

**Rio** [48:15]
哈哈哈 。

**吴涛** [48:16]
但是反过来如果你用 Vim 的话 ， 这种功能你就你可能唯一能做的就是你走到实验室 ， 然后用实验室的 。

**Rio** [48:22]
SSH 回来的 。

**吴涛** [48:23]
呃 SSH 连接到那个办公室的电脑上， 然后在那边编辑你刚才编辑的那个文件 ， 你甚至不能重用一个 Vim Vim session， 或者说你你必须用比如说 Tmax 这样的东西 。

**Rio** [48:37]
哎 ， 等一下，Vim 好像有一个这个 server mode， 我记得 ，但是我从来没有用过 。

**吴涛** [48:42]
我也没有用过 。

**Rio** [48:43]
对 ， 我我记得有这么一个东西 ， 确实是可以这么干 ， 就是啊 ， 这这里要解释一下什么是 server mode 啊 ， 就是我们常讲的编辑器 ，其实如果以大体来分 ， 可以分为两部分 ， 就一个是所谓的前端 ， 就它展示给你那些字符 ， 然后那些呃你现在看到的 。

**吴涛** [48:58]
就是你看得到的部分 。

**Rio** [48:59]
对 ， 那个那一部分 ， 然后它其实后面跑的是一个所谓的所谓的这个编辑器的内核 ， 然后那个内核其实在操作内存中间的一块区域嘛 ， 对吧 ？

**吴涛** [49:08]
对 。

**Rio** [49:08]
然后同时 。

**吴涛** [49:09]
磁盘上的一个文件 。

**Rio** [49:10]
对 ， 通常的话我这两块是在同一个进程或者同一台机器上面的 ， 就至少是在同一台机器上面的 ， 就是你编辑本地的文件嘛 。

然后刚才讲的那个 server mode 其实可以让你把这两个分开 ， 就是你可以在比如本地启动一个 Vim 的前端 ， 然后它连接的不是你本地的 ， 就它编辑的不是你一个本地的文件 ，而是连接到远程的一台 Vim 的 server 上面去 ， 然后通过啊这种方式去编去控制远程那台 server 编辑它的内存或者是中的一个区块去编辑它的那个一个文件嘛 。

所以其实也是这样做 ，但是在现实中我似乎还没有发现有什么场合能用到这一点的 。

**吴涛** [49:52]
对 ，因为 Vim 的使用模式和 Emacs 使用模式基本上就是两个极端 。

**Rio** [49:57]
嗯哼 。

**吴涛** [49:58]
Vim 就是 Vim Vim 非常小 。

**Rio** [50:00]
嗯 。

**吴涛** [50:01]
启动非常快 ， 就像一个命令一样 。 呃一打 Vim 它立刻就会弹出来一个窗口 。

**Rio** [50:07]
对 。

**吴涛** [50:07]
而 Emacs 则是一个启动相对来说比较慢的这么一个工具 。 所以呃使用 Vim 的习惯也就是呃多次的进入 Vim， 多次的切出 Vim。

**Rio** [50:19]
嗯 。

**吴涛** [50:19]
然后配把 Vim 作为你一系列工工具之中一个组件使用 。

**Rio** [50:25]
对 。

**吴涛** [50:25]
而 Emacs 反过来呢 ， 基本上就是你进去之后就想办法不要从里面出来 。

**Rio** [50:29]
哈哈哈 。

**吴涛** [50:30]
一切一切功能或者一切工具尽量在 Emacs 里面内部解决 。

**Rio** [50:34]
嗯 ， 所以 Vim 应该是一个你的系统里面的常驻进程 。

**吴涛** [50:39]
啊 ， 你说 Emacs 应该是常驻进程吧 ？

**Rio** [50:41]
对对对 。

**吴涛** [50:41]
还是 。

**Rio** [50:41]
哎 ， 对 ，Emacs 应该是你的系统的一个常驻进程 ， 就是它 。

**吴涛** [50:45]
对 ，因为你在这个对 ， 你在这个 Emacs 里面基本上可以做任何事情 ， 比如说看当前的日历啊 ， 这种小儿科的事情全都可以在 Emacs 里面完成 。

**Rio** [50:53]
对 。

**吴涛** [50:53]
甚至还可以玩俄罗斯方块 。

**Rio** [50:56]
对 。

**吴涛** [50:56]
Emacs 内置了俄罗斯方块功能 。

**Rio** [50:58]
嗯哼 。

**吴涛** [50:58]
这也是呃 Vim 所缺乏的一个一个一个一个特征 。

**Rio** [51:04]
啊 ， 还有还有一点我觉得我一直呃想挺羡慕的啊 ， 就是 Emacs 的这个特性 ， 就是 Emacs 的图形界面模式 ， 它是可以使用多种字 ， 就是多种字体组合的 。

**吴涛** [51:17]
OK， 那这个要比 Vim 好多了 。

**Rio** [51:20]
对 ， 然后这个有什么用呢 ？ 就是啊 ， 之前这个是我看我一个朋友在大学的时候用过的 ， 就是他当时他那那我我就他写那个论文或者看论文写写文档的时候 ，他会用那个 LaTeX 来写嘛 ， 然后他他是一个 Emacs 用户 ， 然后我去他那里看的时候就会发现他的那个界面的那个呃 ， 就他可以用那个某一种 Emacs 的 mode 展直接展示出 ， 比如说这是一个标题 ， 它会

大一点的字 ， 然后这个是正文 ， 它会小 ， 它会是一个正文的字体 ， 然后它是你看到什么二级标题 ， 它又会是介于大标题和正文之间的一个字号或者是另外一种形态的字 。

就它 。

**吴涛** [52:02]
万所见其所得 。

**Rio** [52:03]
呃 ， 对对对 ， 就是这个意思 。 而且它可以在因为 Emacs 的图形界面其实非常牛逼 ， 它可以插入什么刚才你讲音波音乐这种小儿科也可以做 ， 还可以插插入图形嘛 。

它甚至可以通过一个一个一个插件 ， 就 Emacs 插件 ， 即时的渲染你在 Emacs 的文档里面输入的一条 LaTeX 的公式 ， 然后把那个渲染的结果以图片的形式展现在那里 ， 实现一个所基本上实现一个所见其所得的这样的一个 LaTeX 的编辑的结果 。

**吴涛** [52:33]
嗯哼 。

**Rio** [52:34]
啊 ， 这个是 。

**吴涛** [52:35]
这个是当时 。

**Rio** [52:36]
这个是 Vim 永远做不到的 。

**吴涛** [52:37]
对 ，因为因为 Vim 的它是一个就不管你怎么改 ， 它始终是默认是一个单一字体界面的 ，而且它的那个都是一个所谓短宽字体嘛 。

**Rio** [52:47]
对 。

**吴涛** [52:47]
就是你在唯一能做的就是语法高亮 ， 去改变字体的颜色啊 ， 或者加什么下划线啊之类的东西 ，但是你并不能说你在同一个文档中的一部分采用一种字体 ， 然后另外一部分采用另一种字体 。

你当然你更加不能插入图片 ，因为它根本没有这种接口嘛 。

**Rio** [53:04]
对 。

**吴涛** [53:04]
所以所以这一点上我觉得从啊 ， 就所以其实从这个角度来讲 ， 你你并不能把 Vim 和 Emacs 作为两个同等呃的产品来对比 ， 它就是所谓的就是苹果和橘子的区别 。

**Rio** [53:19]
对 。

**吴涛** [53:20]
这是好像嗯 ，其实但是这种比较仍旧是有意义的 ， 或者说仍旧是时常被拿出来说的 ，因为这有点像呃 Android 和和和 iPhone 之间的差别 。iPhone 同时是硬件 ， 同时是软件 ， 同时是一家公司所提供的一系列服务 。

**Rio** [53:38]
嗯哼 。

**吴涛** [53:39]
但 Android 只是一个操作系统而已 。

**Rio** [53:40]
嗯哼 。

**吴涛** [53:41]
但人们即即便如此 ， 人们还是会把它们拿出来相提并论 。

**Rio** [53:45]
嗯哼 。

**吴涛** [53:46]
对 ，但 Vim Vim 和 Emacs 之间的差别大概大致类似 ，但我仍旧认为这样的比较还是有意义 。

**Rio** [53:54]
对对 ， 就就反正就刚才说的那种 ， 那个 Emacs 能做的很多事情 ，其实 Vim 是做不到的嘛 。 就我有时候还是挺羡慕的 ， 然后也也尝试过很多次去学那个 Emacs，但是因为模态 ，因为没有模态这个东西嘛 ， 啊 ，也一直就是觉得挺沮丧的 。

不过 。

**吴涛** [54:12]
哎 ， 我向你介绍一个插件 ， 叫做 Evo。

**Rio** [54:15]
哈哈哈 。

**吴涛** [54:15]
Sevo，S。

**Rio** [54:18]
是叫 Evo 吧 ？

**吴涛** [54:19]
叫什么来着 ？

**Rio** [54:20]
对 ， 反正大概意思就是 Emacs 上有一个一个插件 ， 刚才讲了可以插一件啊 ， 它完全模拟了呃呃 Vim 的模态系统 ， 然后在 Vim 呃 Emacs 里面也可以做 。

然后后来呃我据说哈 ， 我这个没有没有真亲自求证过 ， 据说是比 Vim 自己的模态好像做的还好 。

**吴涛** [54:43]
对 ， 这就是 VI VI 和 Emacs 的最大的一个区别 ， 就是 Emacs 可以成为 Vim。

**Rio** [54:50]
嗯哼 。

**吴涛** [54:51]
但是 Vim 永远不会成为 Emacs。

**Rio** [54:53]
对 ， 这样说好像有点自黑的意思 。

**吴涛** [54:56]
哈哈哈 。

**Rio** [54:56]
嗯 ，也没有吧 。 我觉得这还是还蛮值得自豪的 ，因为呃反过来想 ，Emacs 的用户可以说我们可以做这个 ， 可以做那个 。

**吴涛** [55:05]
嗯哼 。

**Rio** [55:05]
可是我们可以说呃 ， 我们只需要精集中注意力做一件事情就好了 ， 那其他需要其他的功能就交给其他的工具去实现就好了 。

对 ， 回到最开始说的 ， 这是一种哲学 ， 就是使用哲学的拥趸或者思维状态的一个 。

**吴涛** [55:23]
对对对 。

**Rio** [55:24]
一个差别吧 。 对 ， 我我觉得我们都是那种人， 就是喜欢一个很小所谓的 Unix 哲学嘛 ， 叫做 do one thing and do it well 嘛 。

**吴涛** [55:32]
对 。

**Rio** [55:33]
然后其实我在就是我们在本质上都是排斥那种所谓大而全的方案的 。 比如上次你你讲那个 systemd 的问那个时候 ， 我我应该我也能也能也也能够感觉得到你是不太喜欢那那套方案的 。

**吴涛** [55:47]
对 ， 这但其实如果去追溯这两个工具的出身的话 ， 你就会意识到 VI 其实就是一就从一开始从 1976 年， 它就是 Unix 的一部分 。

**Rio** [56:01]
嗯哼 。

**吴涛** [56:01]
而 Emacs 是由 GNU 的创始人所写的 。

**Rio** [56:05]
Richard Stallman。

**吴涛** [56:05]
GNU 的创始人， 对 ，RMS，RMS 就是 Stallman 写这个东西的时候 ，他其实当然他仍旧是在一台 Unix 的机器上所写写出来的 。

**Rio** [56:16]
嗯哼 。

**吴涛** [56:16]
可是我觉得 Emacs 这个东西本质上还是违背 Unix 哲学的 。

**Rio** [56:22]
对 ， 它是一个就是所谓的大叫什么大教堂嘛 。

**吴涛** [56:25]
对 ， 它就是一个 bazaar， 它就是一个呃 cathedral。

**Rio** [56:29]
对啊 ， 所以但但是有时候你还不得不承认 ， 它有时候你你有一个就是像那种小而精的时候 ，有时候所谓的边界的问题是比较难 ， 就配合起来会有各种各样的不不让你不爽的地方 。

比如说 。

**吴涛** [56:45]
对 。

**Rio** [56:45]
那个 Vim 你要去调一些外部的工具 ， 那么你知道那个在 Unix 里面这种工具之间互相调用 ， 一般都只能通过那个纯文本去去做这个输入输出的这种事情来来进行一些交互嘛 。

**吴涛** [56:58]
对 ，但是 。

**Rio** [56:59]
对 。

**吴涛** [57:00]
呃这个就 。

**Rio** [57:00]
而且它缺乏一种就是比较比较 unified 的这样一种这样一种调用方式 。 比如说呃我刚刚一个小时之前用到的就是比如说我要在 Vim 里面格式化 JSON。

**吴涛** [57:14]
哈哈哈 。

**Rio** [57:15]
对 ， 我就是现在比较流行的或者说比较 de facto 的优雅解决方案是调用 Python 来格式化 JSON。

**吴涛** [57:23]
嗯哼 。

**Rio** [57:24]
那么你就会意识到你要在一个外你就要在 VI VI 这样一种工具里面调用一个外部工具 ，而这个外部工具的输出呃以及它的输入其实都是某种跨进程完成的这样一种 。

**吴涛** [57:41]
对 。

**Rio** [57:41]
这样一种结果 ， 你会觉得非常的有一种很很很不爽的感觉 ， 我很难具体描述它们 ，但是在呃 Emacs 下面你可能只需要敲几个组合键就完了 。

**吴涛** [57:53]
对 ，而且 。

**Rio** [57:53]
然后整个过程就好 ， 你不会觉得自己离开了一次编辑器 ，但是在 Vim 里面你会很明确的感觉到哦 ， 刚才这个东西是由 Python 来做的 。

**吴涛** [58:03]
对 ， 我觉得这可能跟那个 Emacs 的叫做什么 Lisp 的根基有一点呃或多或少的关系哈 ， 就是你知道在嗯曾经有一种操作系统是用 Lisp 写的 ， 就曾经有一种硬件是专门为了跑 Lisp 操作系统的 。

**Rio** [58:20]
Lisp machine。

**吴涛** [58:21]
对 ， 然后它里面的所有状态都是可以被修改的 ， 可以被即时修改的 ， 就是 。

**Rio** [58:28]
对 ，Lisp Lisp 这种语言最大的魅力也就在于它的它的它就像围棋一样 ， 它的基础非常简单 ，但是 。

**吴涛** [58:34]
对 。

**Rio** [58:35]
它可以不停的修改自身 ， 然后可以不停的在运行时添加语言本身的功能 。

**吴涛** [58:40]
对 ， 这就说明一个什么问题呢 ？ 就是它的进程之间的边界其实是比较模糊的 ，因为整个如果整个操作系统的所有的状态都是可以随意的访问和修改的话 ， 那就不存在说像比如说 Unix 这种这种相对于呃就是每个进程之间完全割裂 ， 然后你只能通过简单的输输出或者其他的 IPC 的方式来实现这个进程之间的通信 ， 这种肯定是有一定的这个代价和门

槛 。 就刚才讲的 ， 你比如说你只能依赖于文呃一般情况下你是只能依赖于文本的方式来实现的 ， 就会导致同一个数据你要不断的把它序列化 ， 然后反序列化成呃一个内存中的内存中的一个结构嘛 。

但是如果你像像 Lisp machine 这种方式 ， 或者说在 Emacs 里面这种方式 ， 你整个都是在同一个进程里面的 ， 当然 Lisp machine 那个就比较极端 ，因为整个系统都是一个进程 ， 你可以这么理解吧 。

啊 ， 那么这样的话就不存在说你每次要序列去把一个内存中的结构序列化成文本 ， 然后再去到另外一个地方解序列化出来 ， 这个本来也是一个损耗嘛 ，而且也就是多余的工作哈 。

**Rio** [59:47]
哎 ， 我有个问题就是 。

**吴涛** [59:48]
啊 ？

**Rio** [59:49]
这个 Lisp machine 的 CPU 仍旧是传统意义上的 CPU 吧 ？ 它不是在 CPU 级别提供什么什么什么 card CDR 这种这种 。

**吴涛** [1:00:00]
好像是 ， 好像是这样的 。

**Rio** [1:00:02]
真的吗 ？ 这这可能吗 ？

**吴涛** [1:00:04]
呃 ， 为什么不可能 ？ 那只有那只有几个什么七个还是八个的源嘛 ， 就是那个最原始的那几个那几个表达就可以了 。

**Rio** [1:00:11]
对 ， 可是这样这样的芯片真的存在吗 ？ 就是专门直接解释执行 Lisp 语语句的芯片 。

**吴涛** [1:00:18]
我没记错应该是这样的 。

**Rio** [1:00:19]
你确定吗 ？

**吴涛** [1:00:20]
可以可以再可以再查一下 。 你你你你再问一下 ，因为我记得是这样子的 ， 就如果至少 Lisp machine 不是的话 ， 曾经有人做过这样的东西 ，但是虽然性能怎么样我们再说啊 ，但是起码是存在过这么一种东西的 。

**Rio** [1:00:33]
对 ， 如我相信如果能在硬件上完成一个 Lisp 语言的硬件解释器的话 ， 那的确是非常非常 alien 的一种东西 。

**吴涛** [1:00:45]
啊 ， 它它还是通过这个汇编成机器语言啊 ，但是它应该是在硬件层面有对这个 Lisp 特性有所支持的 。

**Rio** [1:00:53]
OK。

**吴涛** [1:00:54]
啊 ，也不是完全的通过那种呃方式你讲那种方式来实现 ，但是差不太远了已经 。

**Rio** [1:01:01]
OK。

**吴涛** [1:01:02]
对 。

**Rio** [1:01:02]
Anyway， 回到回到回到 Emacs， 对 Emacs 的非常非常诱人的一点大概也就在于呃 Ellipse Elisp 这种语言上面了 。

**吴涛** [1:01:12]
嗯哼 。

**Rio** [1:01:13]
对 ， 我其实有好多次下决心要学一学 Lisp， 呃学学 Emacs 也就是因为想要找一个真正的能够用到 Lisp 的地方 。

**吴涛** [1:01:22]
嗯哼 。

**Rio** [1:01:23]
嗯 ，不过每次都是因为就是小拇指或者是大拇指开始抱怨 ， 然后我想啊 ， 还是还是算了吧 ， 健康要紧 。

**吴涛** [1:01:32]
啊 ， 这个就是我们上一哎应该是前一期提到的啊 ， 这个键盘的问题 ， 就是 Emacs 的过多的使用快捷键 ，而且在目前的主流的键盘的布局上面 ， 这些快捷键对你的手指 ， 特别是小指都是一个极大的考验 。

**Rio** [1:01:50]
对 。

**吴涛** [1:01:51]
然后如果你不想你在可能 40 岁之前就手指或者手掌废掉的话 ， 可能需要要做一些比较大的调整才可以了 。

**Rio** [1:01:59]
对 ， 如果你不想在手上也出现什么拇指外翻 ， 小指外翻这种症状的话 ， 这还是 。

**吴涛** [1:02:05]
所以你应该买那个 ， 你应该买那个 。

**Rio** [1:02:06]
我们不应该这么 ， 我们不应该这样这样误导听众 。

**吴涛** [1:02:09]
所以应该买那个 paddle。

**Rio** [1:02:11]
Yeah， 买那个踏板是挺有用的 。

**吴涛** [1:02:14]
OK， 应该还挺有用 。

**Rio** [1:02:14]
嗯 ， 对 ，其实这边也可以解释一下， 就是如果我们听众没有用过 Emacs 的话 ， 那么 Emacs 的绝大部分操作都有一个对应的快捷键 ， 比如说呃退出 Emacs 是什么 ？Ctrl + X，Ctrl + C。

**吴涛** [1:02:30]
嗯 ， 对 ， 应该是吧 ？

**Rio** [1:02:32]
应该是吧 ？

**吴涛** [1:02:33]
还是 ？

**Rio** [1:02:34]
我忘了 。

**吴涛** [1:02:35]
对 ， 就是大 ，而且大部分 Emacs 的快捷键都是要按两次 ， 就是你不仅仅是像比如说 Windows 里面 Ctrl + X 是剪切 ，在 Emacs 里面呃你为了退出编辑器要按 Ctrl + X 松开 ， 再按 Ctrl + C。

对 ， 就绝大部分命令都有两到三个快捷键需要依次按下 。

**Rio** [1:02:58]
对 ， 所以所以刚才我们讲你知道为什么你的那个小小拇指会很快要废掉了吗 ？ 也是这个原因 。

**吴涛** [1:03:03]
对 ， 你你刚刚听你乍听可能没有什么 ，但是想象一下， 你每要每要你每要改一个单词 ， 每要改一行字 ， 你就必须按两三次 Ctrl， 那对于时间一长的话 ， 对于你的小指其实是伤害相当大 。

**Rio** [1:03:17]
而且我觉得它那些快捷键的那个就是我觉得很难 ， 就是我可能也是用的不够熟练哈 ，但是 。

**吴涛** [1:03:23]
对 。

**Rio** [1:03:23]
我觉得好像很难记住哎 。

**吴涛** [1:03:26]
对 ， 就是经常有 Lisp 呃那个 Emacs 用户跟我说什么 Emacs 用呃快捷键比较符合直觉 ， 就 Ctrl + X 其实是呃 extended commands， 然后 Ctrl + C， 就是呃 whatever，Ctrl + C cancel 吧 ， 就 extended command， 然后 cancel 其实还是挺好记的 。

可是反过来呃你可以说 Ctrl + N next 呃是移动光标向前 ， 对吧 ？

**Rio** [1:03:51]
嗯哼 。

**吴涛** [1:03:51]
还是还是向下翻 ？

**Rio** [1:03:54]
我我忘了 。

**吴涛** [1:03:55]
Ctrl + N next。

**Rio** [1:03:56]
下一页吧 。

**吴涛** [1:03:57]
Next。

**Rio** [1:03:57]
对 ， 应该是下一个 。

**吴涛** [1:03:58]
Ctrl + P 是往回 ， 然后 Ctrl + F 是向前 ， 光标向右 ， 或者说 Ctrl + B 是光标向左 ， 就是 next previous forward backward， 这些是符合直觉的 。

可是 。

**Rio** [1:04:10]
其实也不一定 ， 如果你是母语是英文来讲 ， 你觉得还可以猜想出来一个什么 next previous 那些 ，但如果你母语不是英文 ， 或者是甚至你比如说你母语是德文 ， 你你想一下这个符合直觉吗 ？

我觉得也不一定啊 。

**吴涛** [1:04:25]
呃德德语可能也还行 。

**Rio** [1:04:29]
对 ，anyway，但但这不就回到了美国中心论这个问题 。

**吴涛** [1:04:33]
对对对 。

**Rio** [1:04:34]
对 ，而且这样其实同同样的问题在 Vim 上面也有啊 。

**吴涛** [1:04:38]
呃对 ，也是 。

**Rio** [1:04:40]
比如 change change 或者是或者是 yank。

**吴涛** [1:04:42]
嗯哼 。

**Rio** [1:04:43]
就 y 为什么 y 代表剪切 ， 呃 y 为什么代表复制 ？

**吴涛** [1:04:47]
嗯哼 。

**Rio** [1:04:47]
因为 y stands for yank。

**吴涛** [1:04:48]
嗯哼 。

**Rio** [1:04:49]
可是你要不是你不是英语母语者的话 ，yank 这个词到底什么意思 ？ 其实我很晚很晚才明白 。

**吴涛** [1:04:55]
其实就算你是母语 ， 你看见 yank 就不是你没有理解 Vim 的概念 ， 你知道 yank 也是很很费解的一个概念 。

**Rio** [1:05:01]
对 。

**吴涛** [1:05:02]
对 。

**Rio** [1:05:03]
对 ， 回到 Emacs， 就是 Emacs 里面有些快捷键的确是至少你按下去之后你你是比较容易记下来的 ，但是另外一些则不是 ， 比如说向下翻译屏是 Ctrl + V。

**吴涛** [1:05:14]
嗯哼 。

**Rio** [1:05:14]
那我可以把 V 我不知道 V 代表什么 ，V 代表啊 ， 就至少我是把它理解为下箭头 ， 就是 V 的 V 是向下翻页 ，是因为 V 是一个向下的箭头 。

**吴涛** [1:05:26]
哈哈哈 。

**Rio** [1:05:27]
我这可能是有两个二 ，但是 。

**吴涛** [1:05:28]
所以这里是什么图呃图形法加这个英文混合记忆啊 。

**Rio** [1:05:34]
对 ，不然你告诉我它是什么 ？V 的 V stands for what？

**吴涛** [1:05:37]
我也不记得 。

**Rio** [1:05:38]
对 ， 然后 Ctrl + V 是下翻 ， 那那请你猜一猜什么是上翻 ， 各位听众 ， 各位亲爱的听众 ， 请你猜一猜向上翻是什么 ？

**吴涛** [1:05:48]
是 B 吗 ？ 好像是是不是 ？

**Rio** [1:05:51]
向上翻译屏是 meta， 就是 alt + V。

**吴涛** [1:05:54]
哈哈哈 。

**Rio** [1:05:55]
What the fuck。

**吴涛** [1:05:56]
啊 ， 所以所以

。 对 ， 这里是有一点啊 ，也可以它也可以这么理解嘛 ， 就是 V 是一个翻页的 ，但是然后方向是由这个快捷键来控制的 。

**Rio** [1:06:10]
好啊 。

**吴涛** [1:06:12]
洗地给 Emacs 洗地 。

**Rio** [1:06:14]
你看 Emacs 洗地 ， 我记仇了 。

**吴涛** [1:06:18]
哈哈哈 。OK， 啊 ， 刚才讲了这么两个这么比较古老的编辑器啊 ， 我们来现在说一下现在比较新兴的 ， 特别是呃在所谓的图形界面下比较流行的一些编辑器 。

### 现代编辑器

**Rio** [1:06:29]
嗯哼 ， 或者说试图弥补这种 ，因为 Vim 不管是 Vim 还是 Emacs， 就其实都有点老态龙钟的感觉 。

**吴涛** [1:06:38]
嗯哼 。

**Rio** [1:06:39]
那么在它们之下编辑器 ，在它们之下编辑文档 ， 你取决于你的视角 ， 你可能觉得它非常的老掉牙 ，但也有可能会觉得它非常的酷 。

嗯

， 我相信可能还是觉得在命令行之下修改文件比较老掉牙的人居多吧 。

**吴涛** [1:07:02]
我就觉得呢 。

**Rio** [1:07:03]
哎 。

**吴涛** [1:07:04]
我觉得首先一点就是它们至少从观感上， 就是呃 Vim 和 Emacs 来讲 ， 它们在观感上都是一个不美的应用 。

**Rio** [1:07:13]
这倒是不错 ， 这倒的确是个是是个 。

**吴涛** [1:07:18]
对 ， 起码我知道很多这个就是从 Mac 就是的铁杆用户 ，他都不是特别喜欢这两个 ，他们会喜欢一些就 Mac 原生的 ， 然后是具有就原生图形界面的这么一个编辑器 ， 就比最早的什么像什么 BBedit 啊这种东西 。

**Rio** [1:07:37]
对 ，因为一方面也是它们有图形界面 ， 另外一方面也是它们没有那么多奇奇怪怪的 ， 比如说其实刚才我们说到 Ctrl + N 是向下，Ctrl + P 是向前 ， 向上， 呃 Ctrl + F，Ctrl + B 这些也是不那么符合直觉的 。

就如果你说如果你习惯了在 Word 里面按方向键来改变光标位置的话 。

**吴涛** [1:08:03]
对 ，因为方向键是 。

**Rio** [1:08:04]
方向键是很符合直觉的嘛 。

**吴涛** [1:08:06]
对啊 。

**Rio** [1:08:06]
方向键画了箭头 ， 你按下去 ， 然后光标动了 ， 这是几乎不言自明的一个 。

**吴涛** [1:08:12]
而且它那个箭头的摆 ， 那几个箭的方向和这个摆布都是啊挺一一眼就能看懂的 。

**Rio** [1:08:20]
对 ， 虽然在早期键盘上四个箭头的排布也是有过一番变革 ， 就不是其实如果要追溯计算机呃键盘的样子 。

**吴涛** [1:08:30]
我记得它没有没有这个方向键吧 ， 就早期的键盘 。

**Rio** [1:08:34]
对 ， 比如说中华学习机的方向键 ， 中华学习机的方向键是一个巨大的正方形 ， 然后沿对角线被切成了四块 。

**吴涛** [1:08:46]
What?

**Rio** [1:08:47]
Yes， 就是一个巨大的正方形 。

**吴涛** [1:08:50]
所以你看你你有你有四个对角线被切成了四块 。

**Rio** [1:08:53]
你有四个方向 。

**吴涛** [1:08:54]
然后你有四个三角 ， 对 ， 然后朝上的那一个三角 。

**Rio** [1:08:57]
嗯哼 。

**吴涛** [1:08:57]
上面画了一个朝上的那个倒三角 ， 上面画了一个朝上的正三角 。

**Rio** [1:09:03]
哈哈哈

。

**吴涛** [1:09:06]
这个方向键其实就有点像什么 Xbox 手柄那种感觉 。

**Rio** [1:09:11]
明白了 ， 这个 。

**吴涛** [1:09:12]
对 ， 甚至早期也有键盘是比如说只有左右方向 ， 只有左右箭头 ， 没有上下箭头 。

**Rio** [1:09:18]
啊 ， 那怎么上下呢 ？

**吴涛** [1:09:20]
或者是就没有上下功能 。

**Rio** [1:09:21]
OK。

**吴涛** [1:09:23]
对 。 哎 ， 起码我们知道那个 Vim 的就是 Vim 作者 ， 最 Vi 作者 ， 最哎 ，Vim 作者 ，Vi 作者 。

**Rio** [1:09:29]
Vi 的作者 。

**吴涛** [1:09:30]
Vi 作者那台键 ， 那台那个键盘是没有方向键的 ， 然后它在那个 HJKL 上面那四个字母上面是有四个方向键 ， 分别是那那四个方向哈 。

**Rio** [1:09:43]
对 ， 呃对 ，Billy Joy 用的那台电脑其实在如果你搜你在网上搜一下 Vi Keyboard， 然后搜 Billy Joy。

**吴涛** [1:09:49]
嗯哼 。

**Rio** [1:09:50]
Bill Joy，sorry，Bill Joy， 就可以找到它最开始用的那台电脑的键盘 。 你会觉得呃在这个电脑上 ，在这个键盘上开发出 Vi 其实是非常合理的一件事情 。

**吴涛** [1:10:03]
对 ， 所以唯唯一你觉得那个 Vi 的键的排布不合理 ， 那是因为你的键盘不对 。

**Rio** [1:10:09]
对 ， 没错 ， 这是为什么要买一台买一支 Hyperkin Keyboard。

**吴涛** [1:10:13]
忘掉忘掉键那个什么键上的音的那些东西 ， 然后自己改吧 。

**Rio** [1:10:18]
对啊 ， 这在推特上有一个有一位听众也反馈说 ， 听了我们的节目之后， 终于买了这个心里长草很久的 Hyperkin Keyboard， 然后用的很爽 ，但是被室友投诉说太吵了 。

**吴涛** [1:10:32]
哈哈哈 ， 这个副作用我们一概不承担后果 。

**Rio** [1:10:37]
没错没错 。

**吴涛** [1:10:38]
哎 ， 又扯远了 ， 讲回那个基于图形界面的编辑器 ， 最近比较火的几个是 。

**Rio** [1:10:45]
Sublime。

**吴涛** [1:10:46]
Sublime 是一个比较火的 ， 然后它是一个它其实是一个跨平台的编辑器哈 ， 然后 。

**Rio** [1:10:51]
对 。

**吴涛** [1:10:51]
我没有用过它在其他系统上的怎么样 ，但我在 Mac 上面我还真没感觉到它是一个跨平台的 ， 就它做的原生还挺挺好的 。

**Rio** [1:11:00]
呃对 ，其实它的跨平台是不像 Eclipse 或者是其他什么东西 ， 它的快捷键就是在 Eclipse 里面快捷键在各个平台之下基本上是一致的 。在 Sublime 里面 ， 对 ，在 Sublime 里面呃很多快捷键在不同的平台之下是不一样的 ，Windows 和 Linux 比较像 ，但是 Mac 下面 。

**吴涛** [1:11:20]
有那 command 键 。

**Rio** [1:11:23]
对 ， 就是平就是快捷键其实差蛮多的 。 我最开始用 Sublime 是在 Windows 下面 。

**吴涛** [1:11:28]
而且我觉得它的那个就是它的那个啊叫什么啊图形界面的表达的元素 ， 我觉得很就是还挺原生的 。

但是虽然说它的风格和和这个 Mac 本呃 System 本身是不一样 ，但是我觉得就不没有太违和感啊 ， 这点跟后面要讲到的那个什么 Eclipse 那支流是差差很大的 。

**Rio** [1:11:49]
对 ， 没错 。 而且 Sublime 如果各位还在苦于找不到一款 ， 或者说各位刚学编程 ， 现在还正要寻找一款适合呃初学者的编辑器的话 ， 那我觉得 Sublime Text 其实是非常好的 。

**吴涛** [1:12:05]
对 。

**Rio** [1:12:05]
啊它 。

**吴涛** [1:12:06]
虽然它要钱 ，但 。

**Rio** [1:12:07]
对 ， 它不是一个免费的 ， 它是 。

**吴涛** [1:12:08]
对 ，但你不但你不交钱的话 ， 它也只是时不时的跳出来一个 。

**Rio** [1:12:13]
不一样 。

**吴涛** [1:12:13]
DoubleClick 说请你买吧 ， 然后你按一下 Yes 它就消失了 。

**Rio** [1:12:16]
对 ， 功能上没有任何阉割 ， 时间上也没有限制 ， 唯一就是让你会有点小不爽 。

**吴涛** [1:12:22]
对 ， 是一个非常非常友善的编辑器 。

**Rio** [1:12:25]
对 ， 它还有什么新版本了对吧 ？ 现在是有 3 了 。

**吴涛** [1:12:28]
对 ，Sublime Text 现在处于 2， 就像 Python 一样处于 2 和 3 的割裂状态 。

**Rio** [1:12:32]
它怎么一回事 ？ 就是说新版本还没有就不够好吗 ？ 还是 。

**吴涛** [1:12:36]
呃 ，Sublime Text 2 算是第一次发明的轮子 ， 然后作者觉得还是不够好 ， 所以要重头重启炉灶再写一遍 。

**Rio** [1:12:47]
哎 ， 那 Sublime 1 是长什么样子 ？

**吴涛** [1:12:49]
这我还真不知道 。

**Rio** [1:12:50]
我也是从 2 开始 。

**吴涛** [1:12:51]
对 ， 我没有见过 1 长什么样 ， 估计不是太好应该 。 哈哈哈 。

**Rio** [1:12:55]
对 。

**吴涛** [1:12:56]
啊 ， 另外一个比较老牌的编辑器 ， 可能很多用户就 Mac 用户可能都用过 ， 叫做 TextMate。

**Rio** [1:13:02]
对 ， 我也用过 ，但但不是时间不是很长 。

**吴涛** [1:13:06]
对 ， 它最早的时候就 TextMate 1 的时候 ， 它也是一个付费软件 ，而且价格还不便宜 ， 我记得就好像 。

**Rio** [1:13:14]
不是 80 多刀还是多少钱 ？

**吴涛** [1:13:16]
就是我记得反正至少是多于好像 60 欧左右吧 ， 应该是 。

**Rio** [1:13:20]
嗯哼 。

**吴涛** [1:13:21]
对 。

**Rio** [1:13:21]
你买了吗 ？

**吴涛** [1:13:22]
我没有买 。

**Rio** [1:13:23]
我也没有 。

**吴涛** [1:13:24]
呃 ， 然后后来那个作者好像也是因为卖这个编辑器赚的 ， 听听说是赚翻了 ， 然后也就没有什么动力再写二版 ， 后来他就干脆把二版做了一半的二版的这个代码就是公开源了 ， 然后但现在是一个社区维护的一个编辑器 ， 现在是出了 2 的 Beta 6 还是 7 了吧 ， 应该是就快快要正式发布了 ， 然后现在是一个变成一个免费并且开源的一个编辑器啊 ， 所

以如果你是 Mac 用户 ， 然后你也想试一下这个经典传统的这个编辑器的话 ， 啊 ， 你可以试试这个 ，因为有很多所谓的资深 Mac 开发者也是也是对这个什么 TextMate 的死就死忠嘛 。

**Rio** [1:14:06]
对 ， 甚至你去找一些比较早的早期的 Rails 的那个 Screencast。

**吴涛** [1:14:12]
哦 ， 对对 。

**Rio** [1:14:13]
里面几乎每一个 Rails 的开发者都在用 TextMate。

**吴涛** [1:14:16]
好像好像 TextMate 火起来也就是因为那个 DHH 对吧 ？David Hampson， 哎 ， 这个什么 。

**Rio** [1:14:25]
对对对对 ， 我只记得他有 DHH。

**吴涛** [1:14:27]
就那个呃 Rails。

**Rio** [1:14:28]
就 Ruben Rails 的作者所 ，因为他一直用 TextMate， 然后导致了 。

**吴涛** [1:14:33]
然后他做了他做了很多这个叫什么那个那个就 Rails 的 Screencast， 就是视频的节目 ， 然后里面都都当时出来的时候大家就我我其实也是因为那个被惊艳到 ， 就当时他用了一个嗯配色吧 ，是 TextMate 自带的一个配色 ， 好像是这样 ， 然后显示那个 Ruby 的代码 ， 你知道 Ruby 的代码的本来就比较好看嘛 ， 然后再加上那个漂亮的语法高亮 ， 再加上一个长得很漂亮的

编辑器 ， 大家都觉得哇这个好漂亮 ， 什么赶快去买 ， 然后也就 TextMate 就是好像应该在我印象中也是从那里火起来的 。

**Rio** [1:15:07]
没错 ， 对 ，Ruby 就是这样吸引了一大群外贸协会的这个程序员 。

**吴涛** [1:15:14]
完了完了 ， 我也是外贸协会的好惨 。

**Rio** [1:15:17]
我觉得其实多少多少有点是有一点这样 。

**吴涛** [1:15:20]
对 ， 我觉得这个这个故事说明一个什么道理啊 ， 就是哪怕你是做一个呃就甚至不是一个科技产品 ， 你是一个纯粹的工具 ， 你也是要考虑它的这个所谓的呃 design， 这个外观怎么样 ， 如果你外观不好看 ， 你做的再好 ， 可能在推广或者是 marketing 的时候都没有会有很大的阻力吧 ， 我觉得 。

**Rio** [1:15:41]
对 ， 我觉得对 ， 说到这件事情我就想起来 ， 之所以我很讨厌呃 C++。

**吴涛** [1:15:47]
嗯哼 。

**Rio** [1:15:48]
呃 ， 甚至是一种非理性的讨厌 C++， 部分原因也是因为在刚刚接触 Visual Basic 呃就是微软的 Visual Basic C++ 的时候 。

**吴涛** [1:15:59]
嗯哼 。

**Rio** [1:15:59]
啊不是 Visual Basic C++，Visual Studio C++，Visual 就叫 Visual C++ 吧 ， 应该那个时候 。

**吴涛** [1:16:06]
VC 啊 ， 对 ， 好像应该是 。

**Rio** [1:16:07]
对 ，Visual C++ 6.0 的时候 ， 它的那个用的内置字体是 Fixed SOS，Fixed System。 我觉得我靠 ， 怎么一个写程序的界面可以有这么丑的字体 。

**吴涛** [1:16:20]
啊 ， 你觉得那个 Fixed System 很丑吗 ？

**Rio** [1:16:22]
我我当时觉得相当丑 。

**吴涛** [1:16:24]
对 ， 我呃这里要报自报一下黑历史啊 ， 当时我还觉得我觉得那个还就是啊 ，因为当时在 Windows 上面可选的等宽字体有限嘛 ，也不像现在说大家都很都可以选 。

首先那个 Windows 本来那个字体渲染就比较糟糕 ，而且就是非那个时候还肯定是非 Retina 屏幕 ， 什么 640 乘以 480 的分辨率嘛 ， 就基本上都是那种所谓像素字体嘛 ， 然后在当时 Windows 上面仅有的那些字体里面 ， 我觉得 Fixed System 算是一个还能看不错的了吧 ，不然你还有什么选 Courier 吗 ？

**Rio** [1:16:57]
Courier。

**吴涛** [1:16:58]
那不就更丑了 。

**Rio** [1:16:59]
我觉得 Courier 很漂亮 ， 那个时候 。

**吴涛** [1:17:01]
Courier 的那个 0 和 O 都是分不清楚的 。

**Rio** [1:17:05]
我是用我曾经用过呃 Georgia 做变声字体 。

**吴涛** [1:17:10]
What？

**Rio** [1:17:11]
为了好看 ， 对 ， 为了好看选择 Georgia 做变声字体 。

**吴涛** [1:17:15]
OK， 哇 ， 你这还是很早以前就践行过非等宽字体了 ， 这个还是挺先锋的 。

**Rio** [1:17:21]
哎 。

**吴涛** [1:17:22]
哼哼 。

**Rio** [1:17:23]
年少轻狂 。

**吴涛** [1:17:24]
扯远了 。

**Rio** [1:17:25]
对 ， 我也年轻过 。

**吴涛** [1:17:27]
啊 ， 对 ， 所以 。 哎 ， 刚刚讲到哪里了 ？

**Rio** [1:17:31]
对 ，Fixed 对对对 ， 继续说吧 ， 反正扯远扯远了 。Fixed System 呃一个优点是它和宋体呃一起显示的时候 。

**吴涛** [1:17:39]
那个 2:1 的关系 。

**Rio** [1:17:41]
对 ， 正好是 2:1 的关系 ， 然后我看这个编辑器里面 ， 我靠 ， 英文是 Fixed System， 然后中文动不动出来什么烫烫烫烫烫 。

**吴涛** [1:17:48]
嗯哼 。

**Rio** [1:17:49]
啊 ， 我我我我想起我为什么喜欢那个 Fixed System 这个这个这个字体了哈 ， 当时因为一些莫名其妙的原因 ， 我在一个做就是专注于做嵌入式系统的论坛上， 应该叫 C51 吧 ， 我记得这个 C51 论坛吧 。

**吴涛** [1:18:05]
啊 ，51 芯片 。

**Rio** [1:18:06]
对对对对对 。

**吴涛** [1:18:07]
51 单片机 。

**Rio** [1:18:08]
你也你也你也上过哈 ， 当时我在那里看 。

**吴涛** [1:18:10]
我没上过这个 ，但是你一说 51 那又是芯片 ， 那只能是 51 单片机 。

**Rio** [1:18:14]
对 ， 那个应该是在 9， 我想想应该是 98 或者 99 年的时候 ， 然后当时我去那个 CVS 面上看到有一个人贴了一个现在我们回过头去看应该是叫一个 Screencast 的一个东西 ，但现在 Screencast 就是一个录制屏幕嘛 ， 用一个视频的方式来做 ， 它那个也是 Screencast，不过它那个时间方式非常奇怪 ， 它也是录制屏幕上一个人在讲啊 ， 然后那个它它那个软件不是我们现在一个视频文件 ， 它是一个特

殊的一个 ， 就是感觉就是一一帧一帧放这个屏幕的截图这种感觉 ，而且压缩的还蛮好的 。 啊 ，anyway， 然后就是有一个人在在在展示他怎么用一个那个什么 ， 我忘了一个是波兰还是什么一个开发器编写开发这个用 C 语言写这个嵌入式代码 ， 然后他当时用的那个字体的编那个编辑器的字体就是那个 Fixed System。

**吴涛** [1:19:06]
Code Warrior？

**Rio** [1:19:07]
呃 ， 我会不会 。

**吴涛** [1:19:08]
应该不是 ， 应该没有那么那个是后来才有的 ， 应该很很老的一个编辑器 ， 我也现在一下想不起来 ，但 anyway， 这个不是重点 ， 重点是那个人的声音超好听 。

**Rio** [1:19:18]
Oh my god。

**吴涛** [1:19:18]
然后那因为那个时候我完全不懂编程 ， 我那个时候还在就是就就就因为还没有上那个编程课 ，也不知道什么玩意 ， 就是只是看到好奇有这么一个东西 ， 就觉得挺有意思的 ， 就是我对而且我对嵌入我到现在为止都对嵌入式开发都一点就门路都没有摸着的 ，但是就是因为看那编辑器那个人的声音好听 ， 我把那个视频反复看了 50 遍 。

**Rio** [1:19:39]
Oh my god， 你不仅是外貌学会 ， 你还是声音学会 。

**吴涛** [1:19:42]
声控声控 ，不好意思 。 而且而且他那个我怀疑那个人用的是一款机械键盘 。

**Rio** [1:19:49]
啊 ？

**吴涛** [1:19:49]
就是他他在 。

**Rio** [1:19:50]
或者说他在 。

**吴涛** [1:19:50]
他不是选择用机械键盘 ，而是那个时代只有机械键盘 。

**Rio** [1:19:53]
有可能就是他在解说的过程 ，他会边解说边敲那个那个键 ， 边写代码嘛 ， 然后那个声音 。

**吴涛** [1:20:00]
咔咔作响 。

**Rio** [1:20:01]
又又很清脆又超好听 ， 然后那个人的声线又很好 ， 就是其实后来我想其实也不一定是那个人声音好 ， 就是刚好可能他他那个某一个频段刚好对我来说比较有吸引力 ， 哇 ， 听着好爽 。

**吴涛** [1:20:14]
是女的吗 ？

**Rio** [1:20:15]
男男的一个一个一个比较一个浑厚的男生的声音 。

**吴涛** [1:20:20]
OK。

**Rio** [1:20:20]
我就哇 ， 这个声音太好听了 ， 我每次反复听了 50 遍 。 我现在找不到那个文件了 ， 我能找出来都可以把它录下来给你们听一下 ，但是非常抱歉 ， 系统迁移过很多年了 ， 已经找不到那个 。

**吴涛** [1:20:33]
不知道不知道有没有 51 单片机的资深用户听了我们的节目之后可以找到这篇视频 。

**Rio** [1:20:40]
我就算他找到这个文件我也我也不一定能放得了 ，他那个是一个可应该是一个呃可以执行的一个东西 ， 就是他自己 。

**吴涛** [1:20:47]
What？ 你你小小年纪对于信息安全这么没有 。

**Rio** [1:20:51]
不不 ， 就是他不是 ， 就他是这个意思 ， 就是他那个时候 Windows 上很多这种东西啊 ，因为没有这个通用的播放器嘛 ， 很多那种特殊的媒体格式都是自带一个播放器来的 ， 就打包成一个 EXE 文件来的 ，但是那个时候也不懂安全什么的 。

**吴涛** [1:21:07]
哈哈哈 。

**Rio** [1:21:08]
重病毒是常有的事 。

**吴涛** [1:21:09]
那个时候真的是 。

**Rio** [1:21:10]
很傻很天真 。

**吴涛** [1:21:11]
病毒基本上为所欲为啊 。

**Rio** [1:21:13]
现在也现在也是啊 ，Windows 上面可能还好好一些 。

**吴涛** [1:21:17]
好吧 。

**Rio** [1:21:17]
对 ， 安全上大家还是挺注重 ，但是相信我 9 那个时候应该是 9 Windows 95 吧 ， 对 ， 我没记错的话肯定是没有这概念的 。

**吴涛** [1:21:25]
对 。

**Rio** [1:21:25]
对 。 哎 ， 讲哪里 ？ 哈哈哈 ， 讲到 。

**吴涛** [1:21:29]
讲到 TextMate。

**Rio** [1:21:31]
啊 ， 对 ，TextMate。

**吴涛** [1:21:31]
Fixed System， 对 。

**Rio** [1:21:32]
啊 ， 还有一个是就是你写的 Chocolat， 这个我其实用的很少 ，但我有听说过 。

**吴涛** [1:21:40]
对 ，他 Choc 呃我不知道 ， 我不确定他应该念什么 ，因为他 。

**Rio** [1:21:44]
没有那个 e。

**吴涛** [1:21:45]
他的拼法是 C-H-O-C-O-L-A-T， 就是法语的拼法 Chocolat，Chocolat，而不是英语的 Chocolate。 我所以我怀疑他是不是念 Chocolate。

**Rio** [1:21:56]
那我们现在就姑且这样念吧 。

**吴涛** [1:21:58]
对 ， 总之巧克力编辑器 ， 巧克力编辑器是一个号称要做 the default native OS 的 editor 的一个编辑器 。

**Rio** [1:22:07]
好像没做成 。

**吴涛** [1:22:08]
而且它也是要钱的 ，而且它只有 15 天的试用期 。

**Rio** [1:22:12]
OK。

**吴涛** [1:22:12]
嗯 ，但是基本上很多用户都会觉得它是更加像 TextMate 的一个编辑器 。

**Rio** [1:22:22]
一个 clone， 对吧 ？

**吴涛** [1:22:24]
对 ，有一有一点点像 TextMate 的的精神继承者 ， 就是它有一有一批核心的功能做得非常好 ， 做得非常的实用 ，但是除此之外可扩可扩展性并不是很好 ，因为嗯 Sublime Text 的一大优点就是 Sublime Text 有一大批呃非常优良的插件可以用 ，而且有内置的 ，也不是内置的 ， 就是有一个插件管理器可以安装 。

**Rio** [1:22:49]
嗯哼 。

**吴涛** [1:22:50]
但是 Text Chocolate Chocolate 巧克力编辑器在至至少就我而就我所知是没有的 。

**Rio** [1:22:58]
嗯哼 。

**吴涛** [1:22:59]
但它仍旧是一个相当趁手的编辑器 。

**Rio** [1:23:02]
我印象中用这个巧克力编辑器的人似乎从那个什么在 web 开发的比较多 ， 就是做什么呃写 CSS 啊 ， 写那个 HTML 代码的好像用的比较多 ，但是用它来编程的我还我见的人不是特别多 ， 反正 。

**吴涛** [1:23:19]
呃 ， 好像的确如此 ，因为我自己也只是大概用过那么一两天吧 。

**Rio** [1:23:26]
嗯哼 。

**吴涛** [1:23:27]
就尝鲜一样用了一两天 ， 然后下次再想起来的时候那个已经过期了 ， 然后就删了 。

**Rio** [1:23:33]
对 ， 所以所以他这口号不对 ， 你要做什么这个默认编辑器 ， 你要收费 ， 那肯定是做不到的 。

**吴涛** [1:23:39]
嗯 。

**Rio** [1:23:40]
对 ， 哎 ， 刚刚我们讲了那么多都是 Mac 上面的编辑器啊 ， 现在比较流行的 ，Windows 上面有什么 ，其实我现在已经不太清楚了 。

**吴涛** [1:23:47]
呃 ， 我也不是很清楚 ，但 。

**Rio** [1:23:50]
我记得有一个叫做那个有两个吧 ， 一个叫做 UltraEdit， 这个以前这是一个付费软件 。

**吴涛** [1:23:58]
UltraEdit 最早最早我是用来修改二进制文件 ， 然后改什么什么文件之类的 ， 那个时候一定要用 UltraEdit。

**Rio** [1:24:05]
对 ， 它有一个很方便的一个 hex mode 的编辑模式 ， 对吧 ？

**吴涛** [1:24:09]
对 。

**Rio** [1:24:09]
啊 ， 就如果你不知道的话 。

**吴涛** [1:24:11]
对 ， 那个时候就是我那个时候因为不是还并不懂编程 ， 只是想要想要改一下文件 ， 然后然后赶紧过这一关的时候 。

**Rio** [1:24:21]
作弊 。

**吴涛** [1:24:22]
产生这样的迷思 ， 就是你要改 16 进制代码就必须用 hexEdit。

**Rio** [1:24:28]
不对啊 ， 当时不是有一个什么 。

**吴涛** [1:24:29]
有各种这种游戏的辅助工具可以帮你改嘛 ， 就直接可以 。

**Rio** [1:24:33]
啊 ，DOS 下面有 PC tools。

**吴涛** [1:24:35]
对 ，而且还有什么金山游侠 ， 你记不记得 ？

**Rio** [1:24:39]
金山游侠是改那村啊 ， 对 ， 金山游侠 ， 对 ， 对 ， 可是金山游侠出来已经比 hexEdit 晚很多 。

**吴涛** [1:24:44]
对对对对 ， 就是这一类的吧 ， 就是就专门改游戏的 。

**Rio** [1:24:47]
就是在最开始的时候 ， 我有的我所有的迷思就是在 Windows 下面要改 16 进制的东西就必须用 hexEdit。

**吴涛** [1:24:54]
对 。

**Rio** [1:24:55]
啊 ， 还有一个我不记得 ， 我不知道你看 。

**吴涛** [1:24:58]
但你用 hexEdit 写过程序吗 ？

**Rio** [1:24:59]
我没有 ， 我我很少用 ， 我我我我就是刚刚想吐槽为什么我不喜欢啊那个啊不是 Ultra， 哎 。

**吴涛** [1:25:06]
UltraEdit。

**Rio** [1:25:07]
UltraEdit 的一个原因就是它上面你默认打开有一排的那个 toolbar，不 ， 三排的 toolbar。

**吴涛** [1:25:14]
对 ，UltraEdit 是一个非常像把自己伪装成一个 IDE 的编辑器 。

**Rio** [1:25:20]
对 ， 就是我当时看到我就被震惊了 ， 我说哇 ， 这什么怎么这么多 ， 然后因为在我印象中， 如果你是一个编辑 ， 你是一个文本编辑器哈 ， 然后你还有三排的 toolbar， 意思你是要鼓励我用鼠标 。

**吴涛** [1:25:33]
没错 。

**Rio** [1:25:34]
然后那个时候我已经是深信说鼠标和键盘之间相互一直切换起来 ， 切换去是一个非常低效的一个过程嘛 。

**吴涛** [1:25:42]
没错 。

**Rio** [1:25:42]
然后我觉得哇 ， 这完全不能忍啊 。

**吴涛** [1:25:45]
说到 UltraEdit， 就是我之前在想说你说编辑器和 IDE 之间的界限到底在哪呢 ？ 我曾经一度想说啊 ， 一个非常表面的现象就是 IDE 一定是有 splash screen， 就一定会一上来给你一个启动图案的 。

**Rio** [1:26:02]
嗯哼 。

**吴涛** [1:26:03]
但是反过来想 ，UltraEdit 它明明是一个编辑器 ， 可是它有一个 splash screen。

**Rio** [1:26:07]
我觉得是这样吧 ， 就是如果你能在那个编辑器里面完成啊 ， 就是 code compile debug 这个流程呢 ， 就算 IDE 了 。

**吴涛** [1:26:16]
那可是比如说什么 EditPlus 之类的东西也是可以配置成这样的 。

**Rio** [1:26:21]
那就也就是你要你就是把它当成 IDE 在用了 。其实我我界定它是不是 IDE 有一个地方 ， 我觉得就我我一般用这个标准来判断 ，但是这个很很很土的一个标准 ， 就是如果编译错了 ， 它能不能够直接给我跳到那个错那一条的行号那里去 ， 或者给我高亮出来 。

**吴涛** [1:26:38]
啊 ，有没有 debug 功能 ？

**Rio** [1:26:40]
对 。

**吴涛** [1:26:40]
有没有动态追踪 ？

**Rio** [1:26:42]
就有没有那个 feedback。

**吴涛** [1:26:43]
啊 。

**Rio** [1:26:44]
那如果有的话它就算 IDE。 但这个 。

**吴涛** [1:26:47]
这是一个不错的标准 。

**Rio** [1:26:48]
但其实这个是很有问题的 ，因为现在比如说我现在用那个啊 ，在 Vim 里面有一个插件叫做叫什么来着 ？

**吴涛** [1:26:56]
Syntactic。

**Rio** [1:26:57]
对对对 。

**吴涛** [1:26:58]
还是 Syn， 叫 Syntactic， 就是那个那个插件 ， 它会告诉你出错的地方的行号 ， 然后我用一个 。

**Rio** [1:27:04]
就是 syntactical。

**吴涛** [1:27:05]
我写 。

**Rio** [1:27:06]
可是那是一个那是一个静态分析器 。

**吴涛** [1:27:07]
对 ， 它就说它不 ， 它严格来说不算是一个叫什么啊啊 。

**Rio** [1:27:14]
动态追踪 。

**吴涛** [1:27:15]
对 ， 就它并没有办法很直接的告诉你 ， 编译器告诉你结果 ， 它只是通过一个呃语法分析来做 。 但是现在也有一点界限很模糊的地方 ， 就是比如说现在我写 go 嘛 ， 然后我有一个 go 语言的插件 ， 它会直接因为 go 你它你保存的时候 ， 它就会直接用那个 go 一个一个小工具 。

**Rio** [1:27:33]
Go format。

**吴涛** [1:27:34]
对 ， 它会默认检查你那个是可不可以被编译的 ， 就是有没有什么编译错误 ，因为 go 编译很快嘛 ， 这个其实也无所谓 。

然后就其实如果按刚才那个定义来说 ， 这也算是一个 IDE 了 ， 好像似乎也不太对 。 所以嗯 ， 所以我说刚才那个只是我以前用的一个很土的一个标准哈 。

啊 ， 对 ，但起码有一点就是你不可以在那个编译器里面跑一个 compiler 之类的啊 ， 所以呃那个编辑器里面跑 compiler， 所以那个还还是不算不算 IDE。

**Rio** [1:28:00]
对 。

**吴涛** [1:28:01]
嗯 ， 或者说更更更权威的这种方法 ， 就是去这个工具的官方网站上看 。

**Rio** [1:28:06]
看它自己说什么 。

**吴涛** [1:28:07]
它照告诉它会不会说这是一款 IDE， 如果是的话 ， 啊 ， 好吧 ， 那当它是 IDE 好了 。

**Rio** [1:28:12]
对对 。 啊 ，Windows 上面还有一个我当时用的是一个挺有意思的编辑器 ， 叫 SciTe， 你还记得吗 ？

**吴涛** [1:28:22]
啊 ， 好像那个东西是和某一个 Python 的发行版一起打包发布发布的 。

**Rio** [1:28:27]
呃 ， 我也不太记得它是和谁一起发布了 ，但是我想它还要还在吗 ？ 是叫 SciSciTe， 我记得是不是还是怎么写 ？

**吴涛** [1:28:36]
对对对对 ， 我用过它 ， 我确定我用过它 ， 它好像是和啊某一个特定的 Python 发行版一起打包发布的 。

**Rio** [1:28:44]
对对 ， 现在还有 ， 现在还有这个东西 ， 就是它叫什么 ， 呃 ， 它是 SciTe， 是一个文本编辑器 ， 然后它它本来是为了展示一个叫做哇 ， 这怎么念 ，SciTe 啦 ，SciTe 啦的 。

**吴涛** [1:28:59]
SciTe。

**Rio** [1:29:01]
SciTe 是一个什么玩意儿 ， 就是它是一个编辑器组件 ， 就是它是一个用来写编辑器的一个 library。

**吴涛** [1:29:08]
OK。

**Rio** [1:29:09]
对 ， 然后这个 SciTe 就是为了展示这个 library 的 ， 然后啊 ， 然后它本来这个我记得如果我没记错的话 ， 它本来是要卖这个组件的 license 的 ， 然后为了卖这个 license， 它就要先展示一下这个 SciTe 这个它能做什么 。

然后当时我就被它一些很很多比较新奇的特性所震惊了嘛 ， 就当时比如说它支持这个多种字体 ， 跟 Emacs 那种是一样的 。

**吴涛** [1:29:32]
嗯哼 。

**Rio** [1:29:33]
然后它可以支持等宽非等宽的 ， 就是同时使用 ， 然后语法高亮那些 。 就当时我在在那个这个来说 ， 觉得哇 ， 这个还这么牛逼 ， 还是挺挺少见 ，因为当时你知道那个是从 Notepad 记事本过渡过来的 ， 找的第一款编辑器 ， 你知道吗 ？

**吴涛** [1:29:51]
哦 ， 原来有这么一段黑历史 。

**Rio** [1:29:55]
对 ，而且它是有一个免费的哈 ， 呃 ， 就感觉还还是相当不错 。 我不知道现在怎么样 ， 哇 ， 它现在还有竟然还有 MacOS 版 ， 还在 Mac App Store 里面 。

我一定要下一个下一个来用 。

**吴涛** [1:30:06]
来怀怀旧 。

**Rio** [1:30:07]
来缅怀 。

**吴涛** [1:30:07]
这个编辑器应该已经有一定年头了吧 ， 至少也是有个十年八年的 。

**Rio** [1:30:11]
你想我用的时候是在我想想应该是在 2000 年左右吧 ，Windows XP 的早期的时候 ， 所以应该是有十几年的历史了 。

**吴涛** [1:30:22]
对 ， 我早期用到了 Windows 上的编译器 ， 或者说编辑器 ， 比较印象深刻的一个叫做 EditPlus， 图标是一个红色的笔记本 。

**Rio** [1:30:34]
这个没有 。

**吴涛** [1:30:34]
图标是一个红色的翻开了半页的笔记本 。

**Rio** [1:30:37]
OK。

**吴涛** [1:30:38]
EditPlus， 我来看一看它是不是还存在啊 。

**Rio** [1:30:41]
哈哈哈 ， 说不定已经阵亡了 。

**吴涛** [1:30:46]
哎 ， 还存在 ， 最近更新是 3 月 27 日今年 。

**Rio** [1:30:50]
天哪 。

**吴涛** [1:30:51]
而且它 。

**Rio** [1:30:52]
真的假的 ？

**吴涛** [1:30:52]
的图标还是没有变 ， 是一个红色的笔记本翻开了一半 。

**Rio** [1:30:56]
好吧 。 卧槽 ， 这个 SciTe 我疯了 ， 你知道它卖多少钱吗 ？

**吴涛** [1:31:00]
多少 ？

**Rio** [1:31:01]
42 美元 。

**吴涛** [1:31:02]
哦 ，my fucking god。

**Rio** [1:31:03]
它的整个 4.2 兆 。

**吴涛** [1:31:07]
4.2 兆 。

**Rio** [1:31:08]
在 Mac App，在 Mac App Store 里面 。

**吴涛** [1:31:10]
啊 ， 太屌了 。

**Rio** [1:31:11]
太屌了 。 啊 ， 对对对 ， 它确实是有一个自带的 ， 哎 ， 好像它就是用 Python 来 script 还是怎么样 ， 我忘了 。

反正它是一个 。

**吴涛** [1:31:18]
很有可能 ， 我因为我的在我的印象里面 ，在我的脑海里面 somehow 这个 。

**Rio** [1:31:23]
跟 Python 有点关系 。

**吴涛** [1:31:24]
SciTe 对和 Python 有非常浓烈的关联 。

**Rio** [1:31:29]
哦 ， 我想起来了 ， 我曾经用它来写过 LaTeX。

**吴涛** [1:31:33]
啊哈 。

**Rio** [1:31:34]
就是因为它有那个多种语法高亮 ， 然后字体不一样嘛 ， 就刚才讲 ， 我所以一直很羡慕 Emacs 那个特性 。

**吴涛** [1:31:42]
OK。

我的 LaTeX 的那个

源文件是在 Notepad++ 里面写的 。

**Rio** [1:31:52]
它是一个只能使用等宽字体的吧 ？

**吴涛** [1:31:54]
好像是 ， 对 。

**Rio** [1:31:55]
对 ， 我我觉得就是有时候感觉不是 ， 就只是通过语法高亮 ，有时候很难一眼扫 。

**吴涛** [1:32:00]
你为什么会对锁键技术这种半锁键技术 ， 唯一锁键技术都有这么强烈的需求 ？

**Rio** [1:32:05]
我是希望能够我不看编译结果 ， 只看源码 ， 能够很扫很快的扫清楚这个文档的原始结构 ， 比如说这个大标题 、 二级标题这样那些东西 。

然后如果你每个字都是一样大 ， 只是通过颜色来区别的话 ，其实有一定的难度的 ， 特别是文档比较长的时候哈 。

**吴涛** [1:32:22]
嗯 ， 说的没错 。 这你这么一说 ， 我忽然想起来我在本科做毕业设计的时候 ， 要看一个非常庞大的 C 库 ， 然后当时 download 了一个半编辑器的代码阅读工具 。

这个代码阅读工具的优点之一也是它可以把嗯 ， 比如说函数的名字用大号字体显示 ， 然后一些经常出现的变量可以用比较深的颜色显示 。

**Rio** [1:32:54]
嗯 。

**吴涛** [1:32:54]
可是具体叫什么我忘记了 ，但是当时搜寻它的时候就说它是一款非常适合于阅读代码的编辑器 。

**Rio** [1:33:02]
OK，其实我觉得其实从这个 ， 如果你从纯粹从这个字体和这个排版的角度来讲 ， 就是这种方式也未尝不可 ， 对不对 ？

**吴涛** [1:33:10]
嗯哼 。

**Rio** [1:33:11]
我我我现在有这种就是这么一种想法 ，因为有时候你真的看到一整屏的大小都一样的代码的时候 ， 还是挺辛苦的 。

**吴涛** [1:33:20]
对 。 呃 ， 对 ， 接着说 Windows 上面的编辑器 ， 另外一个就是我刚刚提到的这个 Notepad++。

**Rio** [1:33:28]
嗯哼 。

**吴涛** [1:33:28]
啊 ， 好像是台湾人开发的 。

**Rio** [1:33:30]
对 。

**吴涛** [1:33:31]
对 ， 我记得在我切换到 Linux 之前 ， 它是我几乎是最默认的一款编辑器了吧 。

**Rio** [1:33:40]
OK。

**吴涛** [1:33:40]
不管是写文章还是写呃代码 ， 基本上我都用它 。

**Rio** [1:33:45]
OK。

**吴涛** [1:33:46]
而且它启动快 ， 对大文件的处理也很好 。

**Rio** [1:33:50]
就是比较小巧精致嘛 。

**吴涛** [1:33:52]
对 ，而且应该也是完全免费 。

**Rio** [1:33:55]
对 ， 你说这个我突然想起来 ，其实我也见过很多人在用这个 ， 就是因为首先就是 Windows 默认那个记事本确实太糟糕了 ， 然后有很多人编辑一些文本文件的时候 ， 还苦于找不到一个比较好的工具 ， 然后突然出来这么一个长得很像那个记事本的 ，但是又比它做得好的 ， 我觉得哎 ， 还是不错的 。

**吴涛** [1:34:13]
对 ，Notepad++ 可能就是这样一种东西 ， 它甚至连名字都叫 Notepad， 啊 ， 只不过是 Plus Plus 而已 。

**Rio** [1:34:20]
哈哈哈 ， 对 。

**吴涛** [1:34:21]
对 。

**Rio** [1:34:22]
啊 ， 我想想还有 。

**吴涛** [1:34:23]
而且它经过简单的配置也是可以成为一个比较基本的 IDE 来用的 。

**Rio** [1:34:30]
嗯哼 。

**吴涛** [1:34:31]
嗯哼 。 就是你可以一键呃编译 C++， 然后 C++ 的那个编译结果也也可以在它的那个 ， 它应该也有一个类似于 console 或者说 output 这么一个 。

**Rio** [1:34:43]
啊 。

**吴涛** [1:34:43]
Window， 然后那个编译结果就可以在这个窗口里面显示 ，也挺好的 。

**Rio** [1:34:48]
它是一个免费的还是要付费的 ？

**吴涛** [1:34:50]
是全免费的 。

**Rio** [1:34:50]
OK， 那那这这个这个可以 ， 说不定真的可以成为什么 default Windows editor。

**吴涛** [1:34:55]
就我相信基本上用上它的人都会都挺喜欢的吧 。 就是我在我已经至少说动了四五个朋友 ，在遥远的 Windows 时代 ， 只是说动了四五个朋友用它来写程序 。

因为那个时候你知道 ， 嗯 ， 学校里面教写程序 ， 甚至是在那个什么 Turbo C 的环境之下写 。

**Rio** [1:35:17]
哈哈哈 。

**吴涛** [1:35:18]
再不看回首的往事 。

**Rio** [1:35:20]
OK。

**吴涛** [1:35:21]
但对 ， 我就教会了他们可以在这样一种 Windows 下面的一个编辑器里面写程序 ， 然后通过一配简单的配置就可以调用一个编辑器 。

**Rio** [1:35:31]
嗯哼 。

**吴涛** [1:35:31]
编译器来来来调试程序 ，其实还是挺爽的 。

**Rio** [1:35:34]
嗯 。

**吴涛** [1:35:35]
然后我自己在偷偷的用 Visual Studio。

**Rio** [1:35:38]
哈哈哈 。

**吴涛** [1:35:42]
对 ， 这就好像告诉别人菜好吃你吃菜 ， 然后自己吃 。

**Rio** [1:35:47]
哈哈哈 ， 太机智了这个 。

**吴涛** [1:35:49]
哎呦 。

**Rio** [1:35:50]
啊 ， 最近还有一些比较另类的编辑器出现哈 。 啊 ， 就刚才我们提到那些编辑器 ， 它都是基本上是用一个原生的一个一个 ， 就是这怎么怎么描述 ， 它都是一个原生的代码实现的一个编辑器 。

然后最近有一些基于 WebKit 的编辑器出现了 ， 比如最比较典型的代表就是这个 GitHub 那个 Atom。

**吴涛** [1:36:14]
对 ，GitHub 的 Atom。

**Rio** [1:36:15]
现在这个知道的知道的比较多 ， 它其实是你可以理解它是一个浏览器伪装成一个编辑器的样子 。

**吴涛** [1:36:22]
对 。

**Rio** [1:36:22]
因为它 。

**吴涛** [1:36:23]
就好像有一些基于网页的编辑器 ，在线编辑器 ， 叫叫什么 Code Anywhere。

**Rio** [1:36:30]
呃 ，有个比较著名的叫 CodeMirror。

**吴涛** [1:36:34]
OK。

**Rio** [1:36:34]
啊 。

**吴涛** [1:36:35]
但我记得我用过的那个应该叫做 CodeAnywhere。

**Rio** [1:36:37]
OK。

**吴涛** [1:36:37]
然后就是一个你打开一个网页 ， 然后这个网页上面会给你显示一个编辑器 ， 你可以在这个编辑器里面操作文件呀 ， 只不过这些文件都是在云云端的 。

**Rio** [1:36:48]
对 。

**吴涛** [1:36:48]
然后也有什么语法高亮啊 ， 然后你点一点一下那个发布键 ， 它可以它就可以把你写好的东西发布出来 。

**Rio** [1:36:56]
对 。

**吴涛** [1:36:56]
然后这个 Atom 这样的编辑器就可以视为这样一种离线版本的浏览器里面的编辑器 。

**Rio** [1:37:03]
但是我有一点 ， 我就你如果你真的去看它这种具体的实现 ，以及它整个的这个呃运行的逻辑 ， 你会觉得这这这完全就不适合用来做一个编辑器嘛 ，因为它毕竟是个浏览器 ， 对吧 ？

你比如你要实现那个 ， 比如最简单的例子 ， 你要实现那个光标那一那一竖 ， 然后再不断的变 ， 你是要去通过这个 CS 样式表样式表去去做一个动画 ， 然后你要去去衡量衡量那个位置大概是在这个文档的哪一个相对的这个位移上面去 ， 反正就整个过程是很扭曲的哈 。

所以我到现在为止我我也没看出来 ， 就是大家你看 ， 如果你是一个网页 ， 然后你需要 ， 比如说你是一个什么所谓的云编辑器 ， 你可我可以理解 ，因为你最终是要在网页里面实现 ，因为这个平台的限制 。

但是你说像那个 GitHub 的 Atom 这种东西 ， 我到目前为止我还是不能理解它的这个意义何在 ， 或者为什么要做这么一个东西 。

**吴涛** [1:37:55]
它可能就是呃把 WebKit 当做

就像 JVM 或者是呃 .NET 这样一个运行池来使用 ， 然后用它来写程序的一个尝试吧 ， 我觉得 。

**Rio** [1:38:09]
就什么 WebKit as OS。

**吴涛** [1:38:11]
对 ， 你把 WebKit 当做一个 OS 来使用 ， 或者当做一个 library 来使用 ， 当一个 framework 来使用 。

**Rio** [1:38:17]
对 ，但是就是它们也没有 ， 就是这个编辑器做出来 ， 它也没有说有什么相对于其他非常了不起的东西 。

**吴涛** [1:38:23]
对啊 ， 我没有看出来吧 ， 起码我到目前为止没有看出来它有它有什么啊不得了的创新 ， 或者是有什么呃足够吸引我的特性让我去试一下 。

而且最关键的是它现我当然自己现在是所谓的 Alpha 版本啊 ， 就是很容易挂掉的 。

**Rio** [1:38:38]
现在还是太不完善了 。

**吴涛** [1:38:40]
而且很不稳定 ，不完善 ，而且对资源的占用也是非常可观的 。 因为你想 ， 你在滥用一个浏览器 ， 然后去实现一个编辑器的功能啊 ， 对吧 ？

所以是挺古怪的一件事情 。 嗯 ， 还有一个编辑器 ， 这里是你也写了哈 ，但是我也要大力推荐的 ， 叫做 Acme。Acme 这个编辑器是 。

**Rio** [1:39:05]
你确定你要大力推荐吗 ？

### Acme

**吴涛** [1:39:07]
哎 ， 我的推荐不是说你要去用 ， 你要去什么去去真的去用它作为主力 ，但是你应该去了解它的一些一些很奇怪的一些哲学 ， 我觉得是 。

**Rio** [1:39:16]
对 ， 去了解一下， 就是上世纪七八十年代有这么八九十年代应该是八九十年代有这么一群人曾经有过这样的想象 。

编辑器有可能是这个样子的 。

**吴涛** [1:39:28]
对 。

**Rio** [1:39:29]
啊 ， 这是其实 Acme 对 ， 说到 Acme 就不能不说 Plani 嘛 。Plani 其实就是这样一种非常了不起的先锋性的尝试 。

**吴涛** [1:39:39]
对 。

**Rio** [1:39:39]
只不过它没有成功罢了 。

**吴涛** [1:39:40]
对 ，Plani 的目的是作为一个什么 ， 叫做 。

**Rio** [1:39:44]
更好的 Unix。

**吴涛** [1:39:46]
对 ， 就比 Unix 还 Unix 的 Unix。

**Rio** [1:39:48]
对 ，Next Generation Unix， 就 Plani。

**吴涛** [1:39:51]
但是 。

**Rio** [1:39:52]
啊 ，但是后来也反正它现在你可以去下载 ， 虚拟机比较方便 ， 可以在虚拟机上跑来玩 ，但是作为生产用肯定不太现实了 。

啊 ，anyway，Acme 这个编辑器就是在 Plani 里面 ， 就是 RoPike 为了在 Plani 里面写程序 ， 于是给自己开发了这么一个编辑器啊 。

但是后来它现在用来用它来写这个构程序了哈 。 然后这个编辑器有什么特别的地方呢 ？ 我觉得就说两点比较表面的哈 ，因为我也没有是真的实际去很长时间用过它 ，但是首先第一个 ， 它默认使用是不等宽字体的 。

**吴涛** [1:40:30]
嗯哼 。

**Rio** [1:40:31]
这个就你会觉得非常奇怪 ， 我说哎 ， 为什么会这样啊 ？ 但它是当我记得它给过一个解释 ， 就是觉得它说不等宽字体的程序更加易读 。

**吴涛** [1:40:42]
不等宽的程序更加美观 ， 我觉得 。

**Rio** [1:40:44]
对 ， 就就看 。

**吴涛** [1:40:44]
至少看起来更加好看 。

**Rio** [1:40:46]
当时我幼小的心灵来看 ，在呃 Georgia 这个字体下面 ， 程序看起来好像要更优雅一些 。

**吴涛** [1:40:53]
对 。

**Rio** [1:40:53]
不管其实说代码质量怎么样 ，但至少看起来比较优雅 。

**吴涛** [1:40:55]
对 ， 然后然后这个牵涉如果你用不等宽字体 ， 你怎么去对齐那些东西呢 ？ 但但发现 。

**Rio** [1:41:00]
对齐没有这么多 ， 没有那么重要 ， 没有你想象中重要 。

**吴涛** [1:41:03]
对 ，而且它就是它 ，而且它用那个 Tab 嘛 ， 就是我们现在一般的做法是把 Tab 转换成比如说四个空格来做 ，但是在 Acme 或者包括在在 Go， 你知道 Go 语言里面的缩进默认使用 Tab 吗 ？

**Rio** [1:41:17]
啊 ， 真的 ？

**吴涛** [1:41:18]
真的 。

**Rio** [1:41:19]
我以为现在全世界已经完全导向空格了 。

**吴涛** [1:41:22]
就就呃那个什么 GoLang 里面的 ， 就是你用 GoForMat， 如果你不改配置 ， 它默认会帮你重新用 Tab 来做缩进 ， 就是在这里面也是一样 ，因为 Tab 有个好处 ， 就是它可以如果你是不等宽的话 ， 它也可以能够帮你对齐嘛 。

**Rio** [1:41:35]
对 。

**吴涛** [1:41:35]
啊 。

**Rio** [1:41:36]
但也不是所有情况下能 。

**吴涛** [1:41:38]
对 ， 大部分时候就能用了 。

**Rio** [1:41:39]
对 。

**吴涛** [1:41:39]
啊 ， 然后另外一点就是

RoPike 这个人是不用语法高亮的 ， 你能想象吗 ？

**Rio** [1:41:46]
这个还好吧 ， 就是嗯 ， 我也不知道 ， 我有一点感觉就是语法高亮和等宽和包括那个小键盘 。

**吴涛** [1:42:01]
嗯哼 。

**Rio** [1:42:02]
这些东西都是 。

**吴涛** [1:42:04]
可有可无的嘛 。

**Rio** [1:42:06]
Somehow overrated。

**吴涛** [1:42:07]
对 ，但这点我一直是很不能理解啊 ，因为虽然说它这个 Acme 它是默认是使用非等宽字体的 ，但是它只有一个大小 ，而且只能有一种字体嘛 ， 对吧 ？

我我看到样子是这样子 。

**Rio** [1:42:19]
对 ， 至少在目前版本来说是这样 。

**吴涛** [1:42:21]
对 ， 这就会有一个问题 ， 就是啊 ， 你没有办法通过改变字形或者是字体的大小来区分这个呃这个呃源代码的结构或者是这个文档的结构啊 。

那么刚我讲了嘛 ， 如果一般的做法就是你用语法高亮的方式来来分清楚这个结构啊 ，但是 RoPike 这种大神级的人物 ，他他说我们我们大神写程序从来不需要语法高亮 ， 那那就没有办法了 。

但是我我一直很难想象 ， 就是我也尝试过一下哈 ，但是还是很别扭 。 我不知道你怎么觉得 。

**Rio** [1:42:58]
我我其实在很长时间里 ，在在我比较小的时候写程序 ， 我是不知道怎么开语法高亮的 。 是那个时候我是用就单色的呃单色的模式来写过很长时间的程序 ， 甚至就是我我应该跟你说过吧 ， 就是我最开始学写学写程序 ， 学写程序的时候是用笔写在纸上的 。

那那个时候难道我要用不同的颜色去写一段程序吗 ？ 所以也没什么吧 。

**吴涛** [1:43:25]
OK。

**Rio** [1:43:25]
而且你知道 。

**吴涛** [1:43:26]
所以所以我知道这些就什么大神级程序员的先例都是这样的 。

**Rio** [1:43:31]
不不不不 ， 这跟大神不神没有关系 ， 这只是一个由简入奢易 ，由奢入简难的问题吧 。 就是如果你就我的第一台电脑是一台 Apple II。

**吴涛** [1:43:40]
OK。

**Rio** [1:43:40]
然后 Apple II 上面的 Basic 是只有一种颜色的呀 ， 蓝底白字吧 ， 好像还是 。

**吴涛** [1:43:45]
OK。

**Rio** [1:43:45]
然后你可以在 Logo 和 Basic 之模式之间切换 。

**吴涛** [1:43:49]
嗯哼 。

**Rio** [1:43:50]
可是不管是 Logo 还是 Basic 都没有语法高亮 ， 甚至在 Logo 这种括号套括号的语言里面 ， 括号是没办法配对的 。

**吴涛** [1:43:58]
嗯哼 。

**Rio** [1:43:58]
就是你必须手你靠肉眼去配对 ， 看你的那个两个括号是不是是不是配等啊 。 如果不等的话 ，也许你这一个程序你就要 debug 一个下午 ， 你都不知道那个缺失的对缺失括号在哪 。

**吴涛** [1:44:11]
嗯哼 。

**Rio** [1:44:12]
但是我也不知道 ， 那个时候我从来没有想过没有的那个东西会让我造成什么障碍 。

**吴涛** [1:44:21]
OK。

**Rio** [1:44:22]
Yeah。

**吴涛** [1:44:23]
对 ， 那那那如果你现在呢 ， 就是你我相信现在你应该是习惯了这个语法高亮吧 。

**Rio** [1:44:29]
现在呃有时候可能也会觉得没有语法高亮是不太好的事情 ， 就是有时候写 ， 比如说写一个非常复杂的呃就就打 ， 尤其是在打开刚刚打开一个文件的时候 ， 比如说嗯某一段没有没有某一个文件打开的时候 ， 它没有那个呃扩展符呃扩展名 ， 打开之后 Vim 默认把它显示为单色的 。

我可能我有时候可能要过一段时间才会意识到这个东西没有语法高亮 。

**吴涛** [1:45:02]
哈哈哈 。OK。 嗯 ， 这还蛮新鲜的 。 反正我我现在就遇到一个状况是这样子 ， 就因为我要去登录很多这个服务器嘛 ， 然后你知道我也不是说在每个服务器上都配置我的这个 Vim 的那些东西 ， 那懒嘛 ， 还是因为然后比如说去编辑一些配置文件啊 ，有时候它就没有这个语法高亮 ， 然后就觉得哎呀 ， 好好不好不习惯 ， 觉得它没有安全感 ， 你知道吗

？ 因为语法高亮它可以有时候可以 ， 如果你看颜色不对 ， 一般都是你那个语法错了嘛 。

**Rio** [1:45:31]
对 。

**吴涛** [1:45:31]
就其实 。

**Rio** [1:45:32]
就语法高亮毫无疑问是有助于你发现 。

**吴涛** [1:45:35]
问题的 。

**Rio** [1:45:36]
代码之中的问题的 。

**吴涛** [1:45:38]
对对对 ， 然后就会有一种叫什么不安全的感觉 。

**Rio** [1:45:42]
对 。

**吴涛** [1:45:42]
这算这算我是把语法高亮做了语法检查了 。

**Rio** [1:45:45]
我觉得我觉得你们都有 paranoid。

**吴涛** [1:45:47]
哈哈哈 。anyway， 啊 ， 就所以我我所以我一直很难想象在现在这种情况下啊 ， 呃放弃语法高亮会怎么样 。

不过后来我想了一下哈 ， 就是其实呃在 Go 这个这个呃如果你只写 Go 程序的话 ， 可能没有这个太大的障碍 ，因为你知道如果呃你的就哪怕你没有语法高亮 ， 然后你默如果你配置你编辑器默认保存跑一下那 GoFormat 的话 ， 它是会提醒你哪里错了的 。

就这个是编译器级别的检查 ，不是说只是从语法层面的检查哈 。 啊 ， 所以啊 ， 从这个角度来说 ， 你没有语法编辑器其实呃没有那个语法高亮其实也是挺安全的嘛 ， 起码写 Go。

但是如果你是写 Python 或者想写 Ruby 这种动态语言就完全不行了 ，因为那东西你不跑起来 ， 或者说你跑起来没有跑到那个代码那里去 ， 可能都不会很好的发现那个问题 。

**Rio** [1:46:42]
对 。

**吴涛** [1:46:42]
啊 ， 所以 。

**Rio** [1:46:43]
是这样的 。

**吴涛** [1:46:44]
所以我觉得这里还是有一点区别吧 ，也可能是为什么像 RoPike，因为它也是 Go 的这个作者嘛 。 啊 ， 它能它能敢于用那个什么 Acme 来写这个程序 ，而不用担心写错 ，但反正大脑程序员应该是不会出错的吧 。

哈哈哈 ， 可能是这样 。

**Rio** [1:47:04]
对 ， 然后 Acme 在我看来它有就它比较 hardcore 的一点 ， 就是它有点像 Lisp。

**吴涛** [1:47:13]
嗯哼 。

**Rio** [1:47:14]
它的它的很多东西是可以在运行时改变的 ， 比如说我们司空见惯的这样一个呃 layout， 就是下面是一片可以编辑的区域 。

**吴涛** [1:47:24]
嗯哼 。

**Rio** [1:47:25]
然后上面有一堆菜单栏 。

**吴涛** [1:47:26]
嗯哼 。

**Rio** [1:47:26]
菜单栏里面的每个命令 ， 比如说呃 edit、 呃 view 或者是 format。

**吴涛** [1:47:32]
嗯哼 。

**Rio** [1:47:33]
呃 ， 你会觉得点那个 edit， 然后下面出现一个 drop down list， 然后从里面选一个命令是非常自然的事情 。

**吴涛** [1:47:40]
嗯哼 。

**Rio** [1:47:41]
但是你有没有想过假如说菜单栏这一行里面的每一个字符也都是可以更改的呢 ？

**吴涛** [1:47:49]
哈哈哈 。

**Rio** [1:47:50]
而而 Acme 它就是这样一种编辑器 。Acme 的的你打开一个 buffer 或者是打开一个这个编辑文件的区域的时候 。

**吴涛** [1:47:59]
嗯哼 。

**Rio** [1:47:59]
它上面会有一排这个菜单栏一样的东西 ，而且它的的确也是卖菜单栏 ， 比如说有 edit，有有 dial 之类的 ， 然后你比如说你点一下 edit， 你而且我记得应该是对 Acme 是一个一定要用三键鼠标才能操作的这个编辑器 。

呃 ， 你用左键点一行文字是选中它 ， 然后用中键点一行文字是 whatever， 呃 ， 应该是执行吧 。

**吴涛** [1:48:22]
嗯 。

**Rio** [1:48:23]
然后用右键点又是又有又有其他的功用 ， 就是如果你用左键点一下那个呃菜单栏里面的 edit，不会有任何反应 ， 你只会把光标放在 edit 那边 ， 然后此时你可以改变这个 edit， 比如说你可以把 edit 这个词删掉 ， 然后把它改成比如说呃 dial。

**吴涛** [1:48:43]
嗯 。

**Rio** [1:48:44]
然后你再用你的中键去点一下这个 dial， 你会发现嗯 ， 你原来在那个编辑区里面被选中了一段文字被删掉了 。

**吴涛** [1:48:55]
哈哈哈 。

**Rio** [1:48:56]
对 ， 就是它是一个它的所谓可定制的这么一个呃功能被扩展到了用户界面本身 。

**吴涛** [1:49:06]
对 。

**Rio** [1:49:07]
而且 。

**吴涛** [1:49:08]
所以它是一个可以编辑自己的编辑器 。

**Rio** [1:49:11]
对 ， 它不仅能够配置自己 ，而且能够编辑自己 。

**吴涛** [1:49:15]
对 。

**Rio** [1:49:16]
这是非常非常先锋的一种使用方式 ， 应该说就像就像我说的 ， 就像 Lisp 一样 ， 它的它的使用是如此灵活 ，以至于人们不知道应该怎么使用它 。

**吴涛** [1:49:32]
对 ， 啊 ， 所以其实你看像像你像他们做之前那个 Go 语言的那个那个什么这个日期的展示 ， 就觉得很奇怪 ， 对吧 ？

这种方式编辑器也是很奇怪的 。

**Rio** [1:49:44]
对 ，有时候我觉得这些比较比较比较呃

unorthodox 的 ， 就是非正统的方或者说非我们五辈平庸之人所能想象出的特别的方式 ，有时候比较非常的 pragmatic，有时候就非常的 alien， 非常非常的非常的就就非常奇异啊 。

有时候不知道是件好事还是坏事 ，但无论如何对于你的跳出你的这个 comfortable zone 是有具是有帮助的 。

**吴涛** [1:50:17]
对 ， 就有时候你真的是呃 ， 如果你听到一个非常激进古怪或奇怪的观点 ，而且有这有你又知道一个是一个什么很厉害的人在这么做 ， 你可能要放下所有成见 ， 然后去看一下， 想一想 ， 就是所谓的叫什么 give it five minutes， 去去去想一下它为什么会这样 ，有有什么 。

**Rio** [1:50:38]
对 ， 你就像一个风险投资人， 然后进来一个战战兢兢的创业者 ， 你要先听听他到底要说什么 bullshit， 然后想想这个东西能不能成功 。

**吴涛** [1:50:47]
对 ， 所以有时候会你会觉得学到一些完全不一样的新鲜的一些东西 ， 我觉得 。

**Rio** [1:50:53]
对 ，而且就像风险投资商一样 ， 如果你听你接受了这个观点之后， 你觉得你愿意把你的时间这一个资本投入进去学习一下， 投资在这个这个 idea 上面 ，也许将来的回报是非常高的 。

**吴涛** [1:51:09]
嗯哼 。

**Rio** [1:51:10]
就好像就比如说 Vim， 就是我在 Quora 上找到了一个对比那个 Vim 和 Emacs 的答案里面 。

**吴涛** [1:51:17]
嗯哼 。

**Rio** [1:51:17]
这个作者就说你在 Vim 里面的投资会对于你一生来说都是有不注意的 ，而且可以在林林总总很多其他的那个工具里面得到应用 。

**吴涛** [1:51:30]
嗯哼 。

**Rio** [1:51:30]
比如说最简单的一个例子 ，J 和 K。

**吴涛** [1:51:33]
嗯 。

**Rio** [1:51:34]
这个这个你按下 J 是下一个 ， 按下 K 是上一个 ，在就下一行和上一行在 Vim 里面是这样 。

**吴涛** [1:51:41]
嗯哼 。

**Rio** [1:51:42]
哎 ，在 Gmail 里面也是这样 。

**吴涛** [1:51:43]
对 。

**Rio** [1:51:44]
所以 。

**吴涛** [1:51:44]
Gmail 里面如果你启用了一个叫什么啊快捷键模式的话 ， 你会发现有很多这种键绑定是非常有 Vim 风格的 。

**Rio** [1:51:52]
对 ， 就是如果你学会了 Vim 之后， 呃 ， 你的经验是可以应用在很多其他的工具上面的 。 而反过来 ， 如果你把你的时间花在 Emacs 上面的话 ， 你会发现你就局限在 Emacs 里面了 。

当然 Emacs 是一个非常庞大广大的天地 ，但是你所有的知识就仅仅只是在 Emacs 内部有用而已 。

**吴涛** [1:52:14]
嗯哼 。

**Rio** [1:52:15]
当然部分原因也就是因为 Lisp 这个东西 。

**吴涛** [1:52:17]
哈哈哈 。 对 ， 这是一个哦 ， 对 ， 还有一个有一个那个啊 ， 最早的那个 Firefox 有一个插件叫做 Vampirator 吧 ， 应该是 。

**Rio** [1:52:29]
嗯哼 。

**吴涛** [1:52:30]
就是可以让你的这个 Firefox 的你不用鼠标操作这个浏览器了 ， 你可以用呃命令行 ， 哎不是命令行 ， 就是 Vim 快捷键的方式去操作它来翻页 。

**Rio** [1:52:41]
啊 ， 你居然没有 ， 你没有 ， 你居然没有在用这种东西吗 ？

**吴涛** [1:52:44]
我有啊 ， 我有 Firefox 很早之前就在用这个 ， 后来也有一个 。

**Rio** [1:52:48]
不 ，在在 Chrome 下面也有呀 。

**吴涛** [1:52:50]
对 。

**Rio** [1:52:50]
就是我我一直都在用它 。 最开始 。

**吴涛** [1:52:52]
你现在还在用吗 ？

**Rio** [1:52:53]
是在用一个叫做最开始是用一个叫做 Vimnoom。

**吴涛** [1:52:57]
OK。

**Rio** [1:52:57]
呃 ， 后来现在用的东西叫做 cvim， 就是小写的 c， 然后换成 Vim。

**吴涛** [1:53:02]
OK。

**Rio** [1:53:02]
就是 Chrome Chrome Vim 可以理解 。

**吴涛** [1:53:05]
啊 。

**Rio** [1:53:05]
而且这个这个这个插件已经逆天到什么地步 ， 就是它可以在里面进入这个 Visual Mode， 就是你用 J 向下移动网页 。

**吴涛** [1:53:16]
嗯哼 。

**Rio** [1:53:16]
然后用 F， 然后你按下 F 之后， 屏幕上所有的链接都会被高亮 。

**吴涛** [1:53:22]
嗯哼 。

**Rio** [1:53:22]
然后每一个链接会有一个两个字母到三个字母的组合 ， 你按 ， 然后你接下来按那两个字母 ， 那个链接就会被打开 。

**吴涛** [1:53:29]
啊 ， 这个我知道 ， 那个 Vampirator 也有这个功能吗 ？

**Rio** [1:53:32]
对 ， 然后最逆天的是你按下 V， 就是就进入了 Visual Mode。

**吴涛** [1:53:36]
嗯 。

**Rio** [1:53:37]
在 Visual Mode 之下， 你按 J 和 K 可以移动光标 。

**吴涛** [1:53:40]
哈哈哈 。

**Rio** [1:53:41]
对 ， 然后在你移动光标同时可以选中文字 ， 然后按按呃这个时候再回到呃 Normal Mode， 按一下 Y， 你就可以把刚才选中的文字复制到剪贴板里面 。

**吴涛** [1:53:54]
天哪 。

**Rio** [1:53:55]
完全不需要用鼠标 。

**吴涛** [1:53:56]
对 。 啊 ， 我我之前用过非常长一段时间那个 Vampirator 哈 ， 后来啊切到那个 Chrome 之后， 当时最最早的时候 Chrome 是没有这种插件的 ，也就没有用了 。

后来好像也就把这些事情 。

**Rio** [1:54:07]
对 ， 我是第一时间出现这样的插件的时候就开始用了 。

**吴涛** [1:54:10]
所以 。

**Rio** [1:54:11]
我一直非常关注 ， 我可以凭着自己这个小白鼠的经验来向大家拍着胸脯推广 cvim 这个插件 。

**吴涛** [1:54:21]
OK。

**Rio** [1:54:21]
一定绝对是所有的 。

**吴涛** [1:54:23]
cvim， 对吧 ？

**Rio** [1:54:23]
对 ，cvim， 对 ， 所有的这个 Vim 化 Chrome 的插件里面最好用的一个 。

**吴涛** [1:54:30]
嗯 ， 哎 ， 那个什么 Safari 有类似这种东西吗 ？

**Rio** [1:54:33]
啊 ，Safari 有一个 ，但是 。

**吴涛** [1:54:36]
不好 。

**Rio** [1:54:37]
瘸得要死 。 对 ， 这就是为什么有一天呃就是不是呃那个刚生了有 Samanthe 之后， 用了大概四个小时的 Safari， 然后屁股尿流了逃回了 Chrome， 就是因为完全不能用啊 。

**吴涛** [1:54:52]
哈哈哈 ， 我明白你的苦衷 ，因为现在我我现在我相当长一段 Safari 作为的主力浏览器了 ，但所谓主力也就 60% 左右的时间 ，因为很多时候要切到 Chrome 里面用那个 Flash 插件 ， 非常不幸 。

啊 。

**Rio** [1:55:06]
OK。

**吴涛** [1:55:06]
但是我发现自从有了这个多点触控的触摸板之后哈 ， 我就很少用那种方式 ， 就是浏览网页的时候少使用键盘操作 。

**Rio** [1:55:17]
不 ， 可是你觉你真的觉得多点触控要比用键盘方便吗 ？

**吴涛** [1:55:21]
呃 ，不会啊 ， 就从效率上来讲肯定是不不一不不好的 ，但是我懒 ， 我发现我现在越来越懒了 ， 就是懒得去配 ， 懒得去碰它 ， 懒得去配置那么多东西 ， 然后呃也可能是受了什么重的 。

**Rio** [1:55:37]
可是即便不用配置的话 ， 呃多点触控我就是我现在仍旧是下意识的会去按空格键向下翻页 ，在在浏览器里面 ，而不是用两指向下卷动 。

**吴涛** [1:55:51]
但是你要向上翻怎么办 ？ 你没办法向上翻 。

**Rio** [1:55:55]
但是 99% 的时间你难道不都是在向下翻吗 ？

**吴涛** [1:55:59]
有就向上翻 。 有这么一个问题 ， 就空格键它翻页它那个高度是固定的嘛 ， 就是一次都是翻一屏嘛 。

**Rio** [1:56:06]
可这难道不是一件好事吗 ？

**吴涛** [1:56:08]
呃因为有时候我我想把我 ，因为我比如说你说一个网页从上到下一个一个一个网页哈 ， 我想把我我现在读到可能这个网页的下半部分了 ， 我有一种不好的习惯 ， 我会想把我正在读的那一部分字挪到屏幕的中间 ， 就高度的中间来读 。

**Rio** [1:56:24]
所以你是那个 Ctrl 加 L 的 ， 就是 Emacs 里面那个 Ctrl 加 L。 我怎么会知道 Emacs 的快捷键 ，而不知道 Vim 里面的 ？

**吴涛** [1:56:34]
Vim 也有这个功能啊 ，也可以 。

**Rio** [1:56:36]
Vim 的快捷键是什么 ？

**吴涛** [1:56:37]
哈 ，在 Vim 里我还这个用的蛮少的 。

**Rio** [1:56:40]
你也不记得 ， 我靠 ， 你也不记得 。 但是在 Vim 在 Emacs 里面这个功能是 Ctrl 加 L。

**吴涛** [1:56:46]
Ctrl 加 L 吧 ， 我记得你可以试一下 。 我试一下 。

**Rio** [1:56:50]
就是把当前行移动到屏幕的正中间 。

**吴涛** [1:56:52]
对对对对对 ， 我知道你说的那个东西 。 如果我没记错的话 ， 应该是这个 。 不是 ， 意思下一行还是 J 什么啊 ， 我也想记也记不清楚了 。Middle 吧 。

**Rio** [1:57:03]
对 。

**吴涛** [1:57:03]
看想不想 。

**Rio** [1:57:04]
对 。

**吴涛** [1:57:04]
Anyway， 啊 ， 就是就我知道这个习惯其实效效率挺低 ，但是就是手贱啊 ， 忍不住要去拨弄一下这个触摸板 。

而且就如果你用触控板的话 ， 你可以很方便的 ，因为这个时候这张网就特别是在 Mac 上面下哈 ， 这个网页的这个流畅程度就像一张纸一样 ， 你可以摆到你想要的任何一个像素的位置和精度嘛 。

**Rio** [1:57:27]
嗯哼 。

**吴涛** [1:57:28]
啊 ， 所以我觉得这个时候还蛮好的 ， 所以现在我就一直在用触摸板在去浏览网页去滑来滑去 ，而且又是那个 Safari 里面可以用这个叫什么左滑右滑去回退那些嘛 。

**Rio** [1:57:40]
Chrome 里面也可以 。

**吴涛** [1:57:41]
啊 ， 那 Chrome 里面没有 Safari。

**Rio** [1:57:43]
只不过视视觉效果不是很好 。

**吴涛** [1:57:45]
不是不是 ， 我觉得它的那个对这个触摸板的反馈跟 Safari 是不一样的 。

**Rio** [1:57:50]
啊 ， 对 ，有点 buggy。

**吴涛** [1:57:51]
对 ， 很奇怪 ， 我不知道为什么 ，但是 Safari 的那个感觉要流畅得多啊 ， 然后我很喜欢 。

**Rio** [1:57:56]
哎 ， 我想起来了 ， 对 ，在 Vim 里面这个功能是 Z dot。

**吴涛** [1:58:00]
Z dot。

**Rio** [1:58:01]
对 ，Z dot 是把当前行就是呃 cursor 所在的当前行挪到屏幕的中间 。

**吴涛** [1:58:08]
啊 ，是这样吗 ？

**Rio** [1:58:10]
呀 。

**吴涛** [1:58:10]
哎 ， 真的吗 ？ 啊 ，OK。 呃 ， 可见我这个功能也是不常用的 。OK。 啊 ， 对 ， 就刚才解释那个问题 ， 就是其实我现在越来越懒 ， 就是能系统原生的就用系统原生的吧 ， 懒得去配置了 。

**Rio** [1:58:26]
对 。

**吴涛** [1:58:28]
啊 。

**Rio** [1:58:28]
呃 ， 那 。

**吴涛** [1:58:29]
对 ，其实我们我们说了

Windows， 呃 ， 我们说了哦 ， 呃 Mac 和 Windows 下面的文本编辑器 ， 那 Linux 下面你会用什么来编辑文件呢 ？ 就是假如你用 Linux 图形板的话 。

**Rio** [1:58:42]
还是 Vim 啊 。

**吴涛** [1:58:45]
那有没有什么初学者友好的编辑器 ？

**Rio** [1:58:48]
哈 ， 它有一个 Gedit 吧 ， 我记得 Ubuntu。

**吴涛** [1:58:53]
对 ， 可是 Gedit 是一个非常废的编辑器啊 ， 要我说的话 。

**Rio** [1:58:56]
你你要初学者那么高级强大的编辑器 ， 它也可以找不着版 ， 找不着方向嘛 。

**吴涛** [1:59:03]
好吧 。

**Rio** [1:59:04]
对吧 ？

**吴涛** [1:59:04]
可是我觉得 Gedit 就有点像 Notepad， 我懂 ， 就一开始就 。

**Rio** [1:59:08]
我觉得它比 Notepad 好多了 ， 好吧 ？ 你这样你这样踩它真的好吗 ？

**吴涛** [1:59:14]
好吧 。 呃 ， 还有一个呃叫什么 Nano。

**Rio** [1:59:19]
哦 ，Nano。

**吴涛** [1:59:21]
Nano 可以叫什么 ？ 乞丐版 Emacs。

**Rio** [1:59:24]
Nano、Pico 这些一就像 Microsoft、NuoSoft， 然后 Nano 下面还有个 Pico。

**吴涛** [1:59:31]
对 。

**Rio** [1:59:31]
这些一个一个比小 。

**吴涛** [1:59:34]
那个就纯粹是给呃就是千年等一回配置一个配置文件的时候用的 ，而且真的很小 。

**Rio** [1:59:44]
对 ，Nano 是非常非常小 ，但我我每次用 Nano 都有一种我到底在用什么的错觉 ， 就我到底是在干嘛 。

**吴涛** [1:59:52]
乞丐版 Emacs 嘛 ， 都说了嘛 。

**Rio** [1:59:54]
对 ， 可是 。

**吴涛** [1:59:56]
就它只有最基本的 Emacs 的键绑定 ， 没有任何可以扩展的功能 。

**Rio** [2:00:02]
对 。

**吴涛** [2:00:02]
啊 。

**Rio** [2:00:03]
就我何必如此呢 ？ 我只需要立刻退出这个该死编辑器 ， 然后然后设定一下 edit 的变量就可以 。

**吴涛** [2:00:10]
因为它小啊 。

**Rio** [2:00:10]
不过它还是会在很多这种发行版里面作为一个最最基础的这个编辑器在用 。

**吴涛** [2:00:17]
可是 V 也不大呀 ， 就像就像 Mac 上面的默认 Vim， 我刚才查了一下是 1.5 兆 ， 然后 Emacs 24 兆 。

**Rio** [2:00:26]
不 ， 你这就已经用兆来衡量了 。

**吴涛** [2:00:28]
好吧 ，Pico 是 K 是吧 ？

**Rio** [2:00:29]
要用 KB 来衡量 。

**吴涛** [2:00:31]
OK。

**Rio** [2:00:32]
还是有很大的数量级的差异的在里面 ， 所以所以我还是能理解 ， 就是有时候比如说它它根本就不需要编辑什么 ， 就是临时可能改配置文件某一个字符或者某一个行 。

**吴涛** [2:00:43]
改一行 。

**Rio** [2:00:43]
对对对 ， 所以它根本也就不需要那么多麻烦的功能 ， 就其实也还可以理解吧 。

**吴涛** [2:00:50]
OK，不需要 ， 可是不需要麻烦的功能 ， 你你干嘛要上 Linux？

**Rio** [2:00:55]
哈哈哈 ，有时候没办法 ，有时候没办法 。

**吴涛** [2:00:58]
对 。

**Rio** [2:00:58]
呃 ， 对 ， 我们基本上聊完了编辑器吧 。

**吴涛** [2:01:03]
对 。

**Rio** [2:01:03]
那可以终于终于进入这节目已经过去了 3/4 的时候 ， 终于可以进入我们的下一个环节 ， 就是 IDE 了 。

### IDE

**吴涛** [2:01:14]
哇 ， 我我不知道 ， 我都不知道这个怎么从何讲起啊 。 哎 ，其实首先我自己用的 IDE 是用的非常非常少 。

**Rio** [2:01:22]
OK， 我是因为工作的原因不得不用 IDE。

**吴涛** [2:01:25]
所以所以你在工作中用哪个 ？Eclipse 还是 ？

**Rio** [2:01:28]
我用 Eclipse 和 Xcode。

**吴涛** [2:01:31]
OK。

**Rio** [2:01:32]
因为我 。

**吴涛** [2:01:32]
讲一下感受 。

**Rio** [2:01:35]
用一个就用 Eclipse 的时候感觉在地狱 ， 用 Xcode 的时候好像回到了天 ， 哈哈 ， 天大还是太夸张了 。 就我们可以这样说 ，Xcode 只有两 ，Xcode 就呃啊 ， 先先说 Visual Studio 好了 。

**吴涛** [2:01:52]
OK。

**Rio** [2:01:53]
Visual Studio 呃作为 Windows 上的老牌 ， 或者说甚至说是呃龙头老大的 IDE， 它有很多很多版本 ， 对吧 ？

**吴涛** [2:02:02]
对对 。

**Rio** [2:02:03]
呃有 Ultimate 版本 ，有 Premium 版本 ，有 Test Pro 版本 ，有 Pro 版本 ， 还有什么 Express Edition，whatever。

**吴涛** [2:02:10]
所以所以它们这些版本有什么区别吗 ？

**Rio** [2:02:12]
对 ，其实是有区别的 ， 它有一个 ， 它专门有一页一个 Matrix 来来来来告诉你每一个版本之间有什么样具体的差别 ， 比如说 Ultimate 有所谓的 record tracing 功能 ， 就是你可以把用户的交互录下来 ， 然后呃重新播放用户的交互 ， 然后在播放的过程中去 debug。

**吴涛** [2:02:35]
What the。

**Rio** [2:02:36]
之类匪夷所思的凤凰领角功能都都在这个 Ultimate 里面有所体现 。

**吴涛** [2:02:41]
OK。

**Rio** [2:02:41]
然后 Pro 版本基本上是最最亲民的一个版本 ，但仍旧是要钱的 。

**吴涛** [2:02:45]
啊 ，以哥我记得还有一个免费的针对学生的版本吧 ？

**Rio** [2:02:49]
对 ， 呃 what， 针对学生 。

**吴涛** [2:02:51]
啊 。

**Rio** [2:02:52]
你是说 Express Edition 吗 ？ 还是 ？

**吴涛** [2:02:54]
就叫 Express，Express 是免费的嘛 。

**Rio** [2:02:56]
Express Edition 可并不是针对学生呀 ， 它只是针对那些

， 我就我不知道怎么形容 ，因为其实微软给 。

**吴涛** [2:03:04]
Light user。

**Rio** [2:03:06]
对 ， 微软给编辑器 ， 微软给 IDE 呃定一个价格 ， 或者说微软 IDE 是要钱的 。在我们小时候 ，在我小时候看起来好像是天经地义的事情 ，因为 Microsoft 不就是这样吗 ？

什么东西都要钱啊 。 但可是不就是因为这个大家才去选择 Linux 吗 ？ 可是现在已经 2014 年了 ，Microsoft 仍旧靠卖 IDE 来赚钱 ， 我觉得这个是比较令人费解的一件事情 。

**吴涛** [2:03:31]
它这些的就是购买者大部分是企业嘛 ， 所以反正钱有钱啊 ， 该宰就宰呗 。

**Rio** [2:03:39]
但可是早期好吧 。

**吴涛** [2:03:43]
对吧 ？

**Rio** [2:03:43]
我也不知道该怎么 ， 问题在于

。

**吴涛** [2:03:48]
就你觉得它应该免费吗 ？ 还是怎么样 ？

**Rio** [2:03:50]
我是觉得作为一个开发工具来说 ， 呃难道更多的开发者为你开发出更多的 App 来说 ， 对 ， 难道不应该是对你这个平台的一种助益吗 ？

为什么要为开发工具收费呢 ？

**吴涛** [2:04:03]
哈 ， 这是个好问题哈 ， 这个怎么你还记得那个 Steve Ballmoor 那个 developer developer developer。

**Rio** [2:04:10]
Developer developer developer。

**吴涛** [2:04:12]
但是 。

**Rio** [2:04:12]
然后一窝一窝下面还有汗 ， 对吧 ？

**吴涛** [2:04:14]
但是我们要 ， 哦 ， 你但是你买个编辑器我们要收你 300 刀 。

**Rio** [2:04:17]
对 ， 没错 ，what the fuck。

**吴涛** [2:04:19]
啊啊 ， 这个应该 Express 版本应该是免费的 ， 就是可以 。

**Rio** [2:04:22]
对 ，Express 版本是免费的 ，但是 Express 不能装插件嘛 。

**吴涛** [2:04:26]
嗯 ， 这就是这个意思嘛 ， 就是啊 ， 这个 。

**Rio** [2:04:29]
对 ， 我的我的毕业设计是用那个 C# 写的 ， 然后我当时用的应该就是 C# 的那个 Express Edition。

**吴涛** [2:04:35]
OK。

**Rio** [2:04:36]
因为我因为我也不知道 ， 我们学校可能是有 Visual Studio，但只不过可能晚了 10 年， 就是是 10 年前的版本之类的 。

然后 .NET 那套东西刚当时刚刚流行起来 ， 根本还没有 ，因为我我是从呃 Visual Basic，Visual， 我每次每次都要说 Visual Basic 这是什么 ， 就每次都 。

**吴涛** [2:04:57]
真爱 。

**Rio** [2:04:57]
都是 。

**吴涛** [2:04:59]
暴露了 。

**Rio** [2:05:00]
被压抑的这个这个欲望就是 Visual Basic。

**吴涛** [2:05:04]
对 。

**Rio** [2:05:04]
对 ， 我最开始是用 Visual C++ 6.0 吧 ， 应该是 。

**吴涛** [2:05:08]
嗯哼 。

**Rio** [2:05:09]
后来用 7.0， 然后当时 .NET 出来之后立刻抛弃了 C++ 去用 .NET，因为觉得 C# 当时真觉得 C# 是是逆天级别的那个好用的语言 。

**吴涛** [2:05:19]
哈哈哈 。

**Rio** [2:05:20]
对啊 ，因为那个时候 。

**吴涛** [2:05:22]
其实现在也是 ， 现在它还是一个设计得非常好 ， 就不就起码有 80、85 分吧的语言 。

**Rio** [2:05:29]
对 ， 是一个非常仅次于嗯 。

**吴涛** [2:05:34]
此处此处填入你最喜欢的语言 。

**Rio** [2:05:37]
对 ， 此次仅仅次于 Dollar Language 的语言 。

**吴涛** [2:05:40]
哈哈哈 。

**Rio** [2:05:42]
对 ，因为那个时候我还挺喜欢 Pascal， 就是 Delphi 的 ， 然后呃 Delphi 的那个作者跑去做了 C#， 我也就觉得 C# 应该是 next generation 呃 heyday language。

但是对啊 ， 那个时候谁能想到自己有一天会会会 。

**吴涛** [2:06:01]
彻底转向 。

**Rio** [2:06:02]
哈哈哈 ， 彻底转向 Mac。

**吴涛** [2:06:04]
OK。

**Rio** [2:06:05]
Anyway， 这都是后话 。

**吴涛** [2:06:06]
对 。

**Rio** [2:06:06]
就那个时候觉得

为什么我用苹果 ， 为什么我用微软的东西 ， 为微软开发软件 ， 微软还要向我收钱呢 ？

**吴涛** [2:06:16]
其实现在我觉得它政策就这样子吧 ， 就是比如说现在很多它对这种大学有这种就是就它现在叫什么 Dreamspark 这个项目 ，以前叫 。

**Rio** [2:06:24]
对 ，Dreamspark。

**吴涛** [2:06:25]
以前叫做 Academy Alliance 的 ， 就是你如果你是大学的学生 ， 然后至少你是读这个软工或者是 CS 的 ， 它可以去系里面申请一个账号 ， 然后可以免费下载微软的大部分产品 ， 比如像什么 Office 啊 ， 操作系统啊 ， 还有这种开发工具啊 ， 一套都是可以免费拿的 。

然后 。

**Rio** [2:06:43]
我记得 Dreamspark 曾几何时是各个高校基本上是趋之若鹜的一个东西 ，但是现在据说是微软的销售代表要去高校里面求说 ：" 哎呀 ， 跟我们签一个吧 ， 我们免费给你们 ， 你们只需要搭设一下啊 ， 就什么就是什么可以了 ， 甚至是你们什么所有的那个 access 都可以在我们这边托管啊什么的 。"

**吴涛** [2:07:04]
嗯哼 。

**Rio** [2:07:05]
就现在 Dreamspark 好像真的已经不那么 。

**吴涛** [2:07:08]
就微软现在是在 。

**Rio** [2:07:09]
不那么必要了 。

**吴涛** [2:07:10]
非常适用 。

**Rio** [2:07:10]
微软正在渐渐 。

**吴涛** [2:07:11]
对 ， 现在正在渐渐地淡出 。

**Rio** [2:07:13]
因为现在显学是学什么 Object C， 然后开发 App 嘛 ， 所以 。

**吴涛** [2:07:18]
不 ， 我觉得这跟显学没有关系 ， 就是比如说呃我们平时谈论的什么呃 Lino 的呀 ， 或者是 DigitalOcean 啊这些 。

**Rio** [2:07:28]
嗯哼 。

**吴涛** [2:07:28]
这些 VPS 提供商们 ，有哪家是提供 .NET 环境的吗 ？ 没有啊 。

**Rio** [2:07:35]
那你说服务器吗 ？

**吴涛** [2:07:37]
对啊 。

**Rio** [2:07:38]
啊 。

**吴涛** [2:07:38]
就 VPS 提供商有谁家是在提供服务端的 ？

**Rio** [2:07:41]
呃 AWS 它是有这个 Windows Server 可以用的 ，不过 。

**吴涛** [2:07:46]
对 。

**Rio** [2:07:46]
要贵一些 。

**吴涛** [2:07:47]
用户有有多少呢 ？1% 吗 ？

**Rio** [2:07:49]
不 ， 嗯 ， 对 ， 我们接触的应该不是很多 ， 我觉得感觉这就是用 ，因为要跑那些大部分还是企业的场合 ， 感觉比较多一点 ，但有一个例外就是那个 Stock Overflow。

**吴涛** [2:07:59]
对 。

**Rio** [2:08:00]
啊 ， 对 ， 你讲的确实这是一个问题 ， 就在我们就所谓的呃 Web App 兴起的这个这个时间 ， 微软是其实是呃输掉了这个市场的嘛 。

**吴涛** [2:08:11]
对 ， 它已经 somehow 变得非常的非常的无关紧要了 。

**Rio** [2:08:17]
对 ， 这个我 。

**吴涛** [2:08:18]
就是你让我现在去回忆自己 ， 就是有一天 ， 这几天我在反思 ， 就是我在上次节目里面说到呃自己花在微软上面的时间都蹉跎掉了 ， 真的是这样吗 ？

**Rio** [2:08:30]
哈哈哈 。

**吴涛** [2:08:31]
就是我真的后悔自己曾经努力学过呃 Windows 的这一套相关技相关技术吗 ？

**Rio** [2:08:40]
嗯哼 。

**吴涛** [2:08:40]
什么我我也啃过厚厚的那一本 ， 那个喉结翻的什么深入显著 MFC。

**Rio** [2:08:45]
嗯哼嗯哼 。

**吴涛** [2:08:46]
这些经历真的都废掉了吗 ？ 可能也没有 ， 可能有一部分是内化掉了 ， 变成了变成了可以处理旁通的 。

**Rio** [2:08:54]
对 。

**吴涛** [2:08:54]
内里的一部分 。 但是我觉得大部分时间可能的确是蹉跎掉了 ，因为就回想起来没有任何值得留恋的部分 。

**Rio** [2:09:04]
对 ， 我觉得这个就是一个很重要的原因啊 ， 就是刚才之前我们最开始的节目最开始讲了这个 Mindshare 的问题啊 ， 就是我觉得其实你从现在的来看 ， 微软它真的是已经输掉了 ， 就起码如果你是一个开发者 ， 你能够自由选择的情况下， 它已经输掉了这一部分人的所谓的这个这个 Mindshare。

这点你可以刚才我们讲了这个 ， 比如说它可能很多人会选择去做这个 Web App， 去学什么动态语言去做 ， 然后就不需要 Windows 的东西 ， 那也不需要在 Windows 上面跑 ， 然后有很多人学这个开发 ， 就哪怕是企业应用 ， 它现在大部分应该还是 Java 程序比较多吧 。

**吴涛** [2:09:39]
呃 ， 这个我还真不敢说 。

**Rio** [2:09:41]
就是说起码起码服务端的我感觉是 Java 会多一点 ，但是如果你是 。

**吴涛** [2:09:45]
对 ， 前阵子找工作的时候 ， 我出于好奇也输入了什么 .NET 或者是 C# 或者是之类的 。

**Rio** [2:09:51]
肯定是有的 。

**吴涛** [2:09:52]
搜了一下 。

**Rio** [2:09:52]
对 。

**吴涛** [2:09:52]
呃 ，而且还不少 。

**Rio** [2:09:54]
对 。

**吴涛** [2:09:54]
至少在 。

**Rio** [2:09:55]
就它企业它是用分两部分嘛 ， 一个就是它跑在呃服务器端的一些东西 ， 然后是跑在这个客户端的东西 。

**吴涛** [2:10:01]
对 。

**Rio** [2:10:01]
客户端这边应该还是 Windows 的 ， 就是就是 VC 和 Visual Studio 这些的天下， 这没有问题 。

**吴涛** [2:10:06]
对 。

**Rio** [2:10:06]
然后但是在移动上面 ， 现在大部分人要么就是开发安卓 ， 要么就是开发这个 iOS， 肯定是没什么 ，Windows 风的用户是非常少的嘛 。

**吴涛** [2:10:16]
对 ，而开发网页程序的话 ，Web application 的话 。

**Rio** [2:10:19]
根本用不着 。

**吴涛** [2:10:21]
基本上用 C# 的也是凤毛麟角 。

**Rio** [2:10:23]
对 ， 非常非常少 。

**吴涛** [2:10:23]
至少在欧洲是这样 ， 对 。

**Rio** [2:10:25]
不光是全球 ， 全球范围内都是这样 。

**吴涛** [2:10:27]
但我觉得中国这个市场好像还是 C# 份额还是挺高的 。

**Rio** [2:10:31]
呃 ，因为盗版嘛 ， 给它助长了 。

**吴涛** [2:10:34]
对 ，因为在中国 。

**Rio** [2:10:35]
助长了 。

**吴涛** [2:10:37]
是 。

**Rio** [2:10:37]
对 。

**吴涛** [2:10:37]
中国在 。

**Rio** [2:10:39]
对 ， 微软的微软的明天 ， 微软的希望就在中国 。

**吴涛** [2:10:42]
但是在中国又被搞了 ， 反了 ， 当然也是很惨的 。

**Rio** [2:10:46]
啊 ， 真的吗 ？

**吴涛** [2:10:47]
啊 ， 你不知道吗 ？ 最近 。

**Rio** [2:10:48]
什么时候的事情 ？

**吴涛** [2:10:48]
就是最近这一年吧 ， 一直被搞得很惨 。

**Rio** [2:10:52]
OK。

**吴涛** [2:10:52]
啊 ， 所以它的日子肯定是不好过的 ， 所以它现在也是要急着求变嘛 ，因为再过可能这种趋势再十几年， 微软就是一个不知名的小公司了 。

哈哈哈 。 啊 ， 刚才你说那个什么微软变得无关紧要了 ， 这个还蛮巧的 。 我在知乎上有一篇回答 ， 当时是问说 Windows 8 的一些事情嘛 ，但是我讲了一个回答 ，也是也就提到了这么一个一个一个概念啊 。

啊 ， 晚点我把这个链接放到这个 notes， 大家有兴趣可以去看一下 。 哎 ， 这个扯的又比较远了 。 然后说回来 ， 然后 Eclipse。

**Rio** [2:11:25]
说回 Visual Studio。

**吴涛** [2:11:26]
对 ，Visual Studio 啊 。

**Rio** [2:11:27]
对对对 。

**吴涛** [2:11:28]
Visual， 对 ， 刚才缘起是说 Visual Studio 非常非常多的版本 。

**Rio** [2:11:32]
嗯哼 。

**吴涛** [2:11:33]
而 Xcode 只有一个 ， 或者说它有两个版本 ， 一个不稳定的版本 。

**Rio** [2:11:38]
嗯哼 。

**吴涛** [2:11:39]
和一个更不稳定的版本 。

**Rio** [2:11:40]
哈哈哈 ， 这个黑的漂亮 。

**吴涛** [2:11:44]
而为了那个更不稳定的版本 ， 你需要交一笔钱成为呃 iOS 开发商 ， 呃 iOS 开发者或者是 Mac 开发者 。

**Rio** [2:11:53]
嗯哼 。

**吴涛** [2:11:54]
才可以下载到呃这个更不稳定的版本 。 但默认的那个稳定的版本就是比较稳定的版本 。

**Rio** [2:12:01]
啊 ，是免费 。

**吴涛** [2:12:02]
不要钱的 。

**Rio** [2:12:03]
它是从 4 吧开始在 App Store 里面可以免费下载了 。

**吴涛** [2:12:07]
对 。

**Rio** [2:12:08]
然后然后我记得我还付钱买过它免费之前的版本 ，5 块钱吧 ， 我记得 。5 美 5 美元 。

**吴涛** [2:12:13]
啊 ， 对对对 ，Xcode 曾几何时也是要收费的 。

**Rio** [2:12:16]
3，3， 对 ，3 之前好像是要收费的 。

**吴涛** [2:12:19]
对 ， 就是那个非模态窗口的版本吧 。

**Rio** [2:12:21]
对对对对 。 然后我当时是因为要写一个 OpenGL 的程序 ，因为上一个图形的课 ， 然后要写一些这个 OpenGL 的东西 ， 然后当时觉得呃有两个做法 ， 我在 Mac 上面开发 。

呃不对 ， 今天其实有三个 ， 要不我用 Eclipse 写 ， 这个就直接被我否定掉了 。 待会会解释为什么啊 。

然后因为是我用命令行 ， 我用 Vim 写 ， 然后命令行写 ，但是你知道用用那种方式写 C 或者是把它写 OpenGL 的代码其实非常痛苦的 ，因为没有自动补齐 。

啊 。

**吴涛** [2:12:53]
OK。

**Rio** [2:12:54]
好了 ， 另外一个版本方法就是用那个 Xcode， 然后当时想了一下， 啊 ， 买吧 ， 就为了写这个作业就买了 。

然后后来我买了过了差不多不到一个月吧 ， 它就说它全部全部免费了 。

**吴涛** [2:13:08]
嗯 。

**Rio** [2:13:09]
啊 ， 就很很沮丧 。 哈哈哈 。

**吴涛** [2:13:13]
好吧 。

**Rio** [2:13:14]
OK， 哎 ， 现在讲到那个 Eclipse， 呃 ，Visual Studio 你还有什么要补充的吗 ？

**吴涛** [2:13:19]
嗯 ，Visual Studio 有什么要补充的 ？ 我也不知道 ， 我其实很多很多年没有用过呃 Visual Studio，但是我在前两天看到一句话说呃 Visual Studio 比 Xcode 好了 1 万个 Eclipse 之间 ， 好了 1 万个 Eclipse，Eclipse 这么多 。

**Rio** [2:13:36]
我怎么感觉有 50 步 100 步的感觉 。

**吴涛** [2:13:40]
嗯 ，也许 Visual Studio 是很屌吧 ， 就 IntelliSense 可能是所有的自动补全里面最聪明的一个 。

**Rio** [2:13:50]
嗯哼 。

**吴涛** [2:13:50]
也是最看起来最舒服 ， 或者说细节最多的一个 。 因为 Windows 我觉得微软的东西就是有这样一种特征 ， 就是事无巨细都要告诉你 。

**Rio** [2:14:01]
嗯哼 。

**吴涛** [2:14:02]
都要都要都要来问你 ， 或者说都要都要给提供你一个可能 。 就是我刚才就我为了玩这个文明超越地球 。

**Rio** [2:14:10]
嗯哼 。

**吴涛** [2:14:11]
装了一个 Windows 8， 然后我发现 Windows 8 在拷文件的时候 ， 如果你愿意的话 ， 你可以点一个更多详情 ， 然后这个更多详情里面会跳出来一个呃实时拷贝速度的一个线图 。

**Rio** [2:14:27]
对对 ， 很帅吧 。

**吴涛** [2:14:29]
就是我觉得我靠 ， 你这样无关的信息你告诉我真的有意义吗 ？

**Rio** [2:14:34]
很很多人会看这个的 ， 我不知道为什么 。

**吴涛** [2:14:37]
啊 ， 好吧 ， 时间太多了 。

**Rio** [2:14:40]
哈哈哈 。

**吴涛** [2:14:40]
Maybe。

**Rio** [2:14:43]
呃 ，Eclipse。

**吴涛** [2:14:44]
对 ， 就 Visual Studio 就是这样的东西 ， 就会告诉你非常非常多的 ，其实你也不知道是有用还是没用的知识 ， 呃 ， 信息在那边摆在那边 。

**Rio** [2:14:53]
嗯 。

**吴涛** [2:14:54]
对 。

**Rio** [2:14:55]
是 。

**吴涛** [2:14:56]
但我但我仍然要承认它是一个非常好的编辑器 ， 就是一个非常好的 IDE， 就是至少我的印象里面在好好用的时候 ， 它好用 ，而且它从来不 crash，而且它的文档非常非常全面 。

**Rio** [2:15:09]
对 ， 这个这个是什么 ？ 呃 ，Xcode 不能比的啊 。

**吴涛** [2:15:14]
对 ，Xcode 就有 ，Xcode 有很多非常 ，Xcode 给我感觉有点像刚刚接触那个 Micromedia 的那一套编辑器 ， 那就是 Micromedia 还是 Micromedia 的时代 。

**Rio** [2:15:25]
嗯哼 。

**吴涛** [2:15:26]
Flash 呀 ， 呃 ，Firefox 啊之类的这些东西 ， 就是有很多细小的功能隐藏在某一处 。

**Rio** [2:15:34]
嗯哼 。

**吴涛** [2:15:34]
如果你不知道怎么用的话 ， 那你就不知道怎么用 。

**Rio** [2:15:37]
弄死也找不到 。

**吴涛** [2:15:38]
对 ， 没错 。

**Rio** [2:15:39]
对 ， 这这个导引是一个问题 。 但是就是说从 ，因为我你也做这个 Object C 的开发哈 ， 就是从实际使用的角度来讲 ， 你觉得这两个有什么可比的地方吗 ？

**吴涛** [2:15:50]
呃 ，Xcode 缺少一些 ，有时候我觉得非常简单 ，但是它就是没有的功能 ， 或者说非常必要 ， 它就是没有的功能 。

**Rio** [2:16:00]
比如说呢 ？

**吴涛** [2:16:02]
嗯 ， 比如说 。

**Rio** [2:16:03]
嗯哼 。 就有没有什么一个具体的例子你觉得是 。

**吴涛** [2:16:07]
我现在一时还真的想不出来 。

**Rio** [2:16:11]
嗯哼 。

**吴涛** [2:16:11]
但是 。

**Rio** [2:16:13]
那或或者这么问吧 ， 就是你在它日常使用的过程中， 你有觉得它有哪点地方让你非常不爽的地方吗 ？

或者让你非常爽 ， 或者让你非常不爽的地方都可以 。

**吴涛** [2:16:23]
呃 ， 让我比较不爽的地方可能是有时候它的窗口 。

**Rio** [2:16:29]
嗯哼 。

**吴涛** [2:16:29]
就是它的某些布局是非常让人难受的 。 比如说你要去去点一个什么东西 ， 你会需你会发现这个东西的控件做得非常非常小 。

呃 ， 然后你要去改变它的大小呢 ， 你又会觉得自己已经有的那个编辑区域被压缩了 。

**Rio** [2:16:50]
啊 ， 就布局不是很合理 。

**吴涛** [2:16:53]
对 ， 我觉得布局并不是很合理 。

**Rio** [2:16:55]
嗯 。

**吴涛** [2:16:55]
另外就是它的那个自动补全 ，有时候就是很长一段时间里面都非常蠢 。 比如说它它有时候会不能理解为什么你要 ， 就是有两个 ，有就有时候它是 ， 你有时候你会觉得它是非常笨的 ， 就是比如说有两个一模一样的 ， 呃 ，有两个前 10 个字母一模一样的呃函数 。

**Rio** [2:17:20]
嗯哼 。

**吴涛** [2:17:22]
然后你敲了前几个字母 。

**Rio** [2:17:23]
Object C。

**吴涛** [2:17:24]
你敲了几个字母 ， 它非要把那个不常用的摆在上面 。 你要么要按 Tab 键 ， 然后补全到那个不一样开始的地方 。

**Rio** [2:17:35]
OK， 然后再输入 。

**吴涛** [2:17:37]
再大下一个字母是吧 ？ 再输入下一个字母 ， 要么就要按下下或者是什么键去去去手动选中 。

**Rio** [2:17:44]
嗯哼 。

**吴涛** [2:17:45]
你真正想要打的那个那个东西 。

**Rio** [2:17:48]
OK。

**吴涛** [2:17:48]
这个时候你会觉得 IntelliSense 真的是非常非常聪明 ， 就是它会去猜你最想要的是哪一个 。

**Rio** [2:17:53]
它会 。

**吴涛** [2:17:54]
但是现在 Xcode 可能是要比以前好很多了 。

**Rio** [2:17:56]
OK。

**吴涛** [2:17:57]
至少这这两天我在就是最近我在写 Swift 的时候 ， 感觉好像是没有以前那么不爽 。

**Rio** [2:18:04]
就稳稳定性那些有提高吗 ？ 就是之常 。

**吴涛** [2:18:06]
稳定性现在 。

**Rio** [2:18:07]
看有人说要 crash 掉 ， 或者是失去响应这样 。

**吴涛** [2:18:10]
我记得曾经在 4.7 的时候 ，有一个版本在那个呃 App Store 里面得到了一星半还是什么 ， 就是因为那版非常非常就是大概平均半个小时 crash 一次 。

然后我现在经常遇到的一个问题是什么 ？ 它会跳出来一个半透明的提示框 ， 说什么呃 "Internal module for syntax highlighting has crashed.

Please restart Xcode." 之类的这么一个提示框 。

**Rio** [2:18:42]
嗯 。

**吴涛** [2:18:42]
就是它告诉你我内部有个组件 crash 了 ， 你有可能的话请你重新启动一重新启动一下 Xcode。 我就 what the fuck。

对 ， 另外还有一个就是我买我专门为了 Xcode 买了一个小程序 。

**Rio** [2:18:56]
啊哈 。

**吴涛** [2:18:56]
叫做 Watchdog。

**Rio** [2:18:58]
啊 ， 这干嘛的 ？

**吴涛** [2:18:59]
Watchdog 应该是卖大概 10 欧还是几欧 。

**Rio** [2:19:02]
嗯哼 。

**吴涛** [2:19:03]
反正很便宜的工具 。

**Rio** [2:19:04]
嗯 。

**吴涛** [2:19:04]
它唯一的功能就是在你退出 Xcode 的时候 ， 自动帮你把 Xcode 所有的中间文件删掉 。

**Rio** [2:19:10]
有有什么问题吗 ？ 为什么要这样 ？

**吴涛** [2:19:12]
就是据很多很多那个呃 Xcode 用户的经验来看 。

**Rio** [2:19:19]
嗯 。

**吴涛** [2:19:19]
大部分时候如果 Xcode 行为怪异 ， 你只需要把目前你只需要把它的所有临时文件删掉 ， 然后重新启动一遍就可以了 。

所以这个插件的意图就在于 ， 那你干脆你每次一关 Xcode， 我立刻就把这些所有的文件全都清除掉 。

那代价无非就是下一次启动的时候 。

**Rio** [2:19:36]
慢一点啊 。

**吴涛** [2:19:36]
可能稍微慢一点吧 。

**Rio** [2:19:38]
嗯 。

**吴涛** [2:19:38]
但却以此换来了更多的稳定性 。

**Rio** [2:19:41]
哇 ， 天呐 ， 这个这个 。

**吴涛** [2:19:46]
对 ，而且就是我必须要保讲 ， 我必须要保讲 Xcode 的一点 ， 就是现在的 Playground 非常爽 。

**Rio** [2:19:51]
啊 。

**吴涛** [2:19:52]
就是 Playground 就是 Xcode 里面那个功能 ， 你可以在左边输入代码 ， 然后右边这个有一个很简单的窗口 ， 左边可以输入代码 。

**Rio** [2:20:00]
嗯 。

**吴涛** [2:20:00]
窗口右半可以输出左边输入的代码 ， 呃 ， 所会展现出来的东西 ， 比如说你写一个 for 循环 ， 然后右边就会出现这个 for 循环被执行了多少次 ，以及中间如果有输出结果的话 ， 它会把中间的输出结果也显示在右边 。

就不需要你做什么 ， 你只需要把语句写出来 ， 然后按回车 ， 然后它就会自动实时的去演算左边的语言 ， 然后在右边显示出左边演算的结果来 。

**Rio** [2:20:27]
啊 。

**吴涛** [2:20:28]
就是如果你看过那个 Keynote 的话 。

**Rio** [2:20:30]
啊 ， 看过 。

**吴涛** [2:20:30]
那次 WWDC Keynote 的话 ， 呃 ， 当时演示的就是这功能 。

**Rio** [2:20:35]
嗯 。

**吴涛** [2:20:35]
我必须说这个 Playground 是非常爽的 ，但是 Playground 经常 crash 在我手里 。

**Rio** [2:20:40]
哈哈哈 。

**吴涛** [2:20:42]
就是 Swift 它是一种伪装成动态语言的静态语言 。

**Rio** [2:20:46]
啊 ， 对 。

**吴涛** [2:20:46]
它每一次都要 。

**Rio** [2:20:47]
多编译一下 。

**吴涛** [2:20:48]
但是它经常编译到一半就挂了 ， 然后导致整个 Playground 都挂了 。

**Rio** [2:20:55]
所所以什么苹果的这个软工的质量是真的这么糟糕吗 ？ 还是 。

**吴涛** [2:21:02]
我觉得是这样 ， 就是你必须要正视这一点 ， 就是苹果它毕竟是个硬件硬件公司 ， 或者说它是一个一体化集成公司 。

**Rio** [2:21:10]
嗯哼 。

**吴涛** [2:21:10]
而微软是专门做软件的 。

**Rio** [2:21:11]
对 ， 这里面还是有 。

**吴涛** [2:21:13]
就是微软也有 Xbox， 我承认微软也有 Xbox。

**Rio** [2:21:15]
哈哈哈 。

**吴涛** [2:21:16]
但是但是从基因上来看 ， 苹果做的软件的确是不如 Mac。

**Rio** [2:21:22]
啊 ， 就从稳定性的角度来看吗 ？

**吴涛** [2:21:24]
对 。

**Rio** [2:21:25]
OK。

**吴涛** [2:21:25]
或者说从乃至从易用性 ， 或者说从从 user friendly 的角度来看 。

**Rio** [2:21:29]
哈哈哈 。

**吴涛** [2:21:30]
都 Xcode 都远远输于 Visual Studio， 这个我必须承认 。

**Rio** [2:21:34]
OK， 所所以它的那它的好处就它比 Visual Studio 好的好的哪好在哪里 ？ 它有它有 。

**吴涛** [2:21:41]
它有选择吗 ？

**Rio** [2:21:41]
它有好处吗 ？ 不 ， 我我就是如果你可以选的情况下 。

**吴涛** [2:21:46]
呃 。

**Rio** [2:21:47]
比如说你们都写 C 程序 ，因为 Visual Studio 也可以写 C 程序 ， 然后 Xcode 也可以写 C 程序 ， 就不是写跟某一个平台直接相关的那种东西的话 。

**吴涛** [2:21:58]
说实话我想不出来什么非常好的 ， 就比如说我刚才第一反应是自动渲染 。

**Rio** [2:22:04]
哈哈哈 ， 漂亮 。

**吴涛** [2:22:06]
对 ，因为 Visual Studio 下面的 ， 就是或者说 Windows 下面的自动渲染是我现在已经不太能容忍的了 。 那但是如果你真要说我要写一个不去考虑跨平台 。

**Rio** [2:22:17]
嗯哼 。

**吴涛** [2:22:18]
当然 Xcode 下面也写不了什么跨平台的东西 。 呃 。

**Rio** [2:22:21]
不是可以写我 。 它有什么 Python 模式吗 ？

**吴涛** [2:22:27]
Xcode 有 Python 模式 。

**Rio** [2:22:28]
就就可以这么干哈 ，但是因为它毕竟可以当成一个编辑器来用 。

**吴涛** [2:22:32]
有 workpoint。

**Rio** [2:22:32]
对 ， 编当成一个编辑器来用吧 。

**吴涛** [2:22:35]
OK。

**Rio** [2:22:35]
那我也不知道这个 point 何在 ， 我只是这样说而已 。 啊 。

**吴涛** [2:22:39]
对 。

**Rio** [2:22:40]
对 。

**吴涛** [2:22:40]
我觉得这一点上 Visual Studio 也许是完胜 Xcode。

**Rio** [2:22:44]
哈哈哈 。

**吴涛** [2:22:44]
但我还是不会用去 ，但我还是不会去用 Visual Studio。

**Rio** [2:22:47]
就是因为太丑了 。

**吴涛** [2:22:49]
就就是因为它已经不是我的 。

**Rio** [2:22:51]
平台啊 。

**吴涛** [2:22:52]
它已经不是我的世界的一部分了 。

**Rio** [2:22:53]
对 。

**吴涛** [2:22:53]
就是它是它对我来说是一种已经是一种比较陌生的东西 。

**Rio** [2:22:57]
你你你你呃 ， 就是你把自己变得再好有什么用 ？ 它已经往前走了 。

**吴涛** [2:23:03]
对 。 I have moved on.

**Rio** [2:23:06]
好悲伤的一个故事 。

**吴涛** [2:23:08]
对 。

**Rio** [2:23:09]
呃 ，Eclipse。

**吴涛** [2:23:11]
对 ，Eclipse 可能是比较呃非常平庸的一个 IDE 吧 ， 应该说 。

**Rio** [2:23:19]
这叫这你要平庸来形容 ， 我觉得这大而全的臃肿的一个东西吧 。

**吴涛** [2:23:23]
不 ， 它所谓平庸就是应该 Eclipse 可以在所有平台上使用 ， 对吧 ？

**Rio** [2:23:28]
对 。

**吴涛** [2:23:28]
然后用 Eclipse 最常最最多使用 Eclipse 的一帮人是没有什么志向的 ， 或者说没有什么呃能呃

此处插入一个一个一个带有歧视性歧视性意味的形容词的品味 ， 或者是 whatever 的程序员所用的 ， 就是你能想象到的最平庸的工作 。

**Rio** [2:23:55]
嗯 。

**吴涛** [2:23:56]
我觉得就是用 Eclipse 在一个公司里面写 Java。

**Rio** [2:24:00]
我发现有个问题 。

**吴涛** [2:24:01]
或者说就是我现在所做的事情 。

**Rio** [2:24:02]
因为我发现有个问题啊 ， 就是就学校里面教人写 ，因为现在大部分就学校里面大部分教的是用 Java 写那个入门嘛 ， 学 CS 入门那些东西 。

**吴涛** [2:24:14]
对 。

**Rio** [2:24:14]
然后我发现他们都在用 Eclipse。

**吴涛** [2:24:16]
对 。

**Rio** [2:24:17]
然后这个 。

**吴涛** [2:24:17]
Java 对 Eclipse 对 ， 这也是平庸的一平庸的一个点 。

**Rio** [2:24:21]
嗯 。

**吴涛** [2:24:21]
就是如果一个人在学校里面学过 Java。

**Rio** [2:24:24]
嗯 。

**吴涛** [2:24:24]
那他基本上就很有可能用过 Eclipse。

**Rio** [2:24:26]
Eclipse。

**吴涛** [2:24:27]
惯性了 ， 对吧 ？

**Rio** [2:24:28]
对 ， 就是教材就会说哦你去下载一个这个工具 。

**吴涛** [2:24:31]
它会一步一步告诉你怎么去完成这个配置的文件 。

**Rio** [2:24:34]
在你没有一个偏好的情况之下， 你当然要按照教材上告诉你的事情来做嘛 。

**吴涛** [2:24:38]
嗯哼 。

**Rio** [2:24:39]
对吧 ？

**吴涛** [2:24:39]
对 。 然后这就导致了 Eclipse 是一个非常没有你你谈到它的时候 ， 你就好像谈论空气或者水 ， 你对它没有什么偏好或者是 。

**Rio** [2:24:50]
对 ， 一个没有性格的东西 。

**吴涛** [2:24:52]
对对 ，而我人们只能吐槽说 ， 比如说 Eclipse 在 Mac 上非常非常慢 。

**Rio** [2:24:58]
这不光是 Mac 吧 ， 所有系统上都很慢啊 。

**吴涛** [2:25:00]
我觉得在 Linux 上还可以 。

**Rio** [2:25:02]
还可以啊 ，OK。

**吴涛** [2:25:03]
但是在 Mac 上面就是经常会卡到 ， 我也不知道应该跟项目有关 ， 就是我现在做的项目是一个呃就我来说一个词 ， 你不要被吓到 。

**Rio** [2:25:14]
嗯 。

**吴涛** [2:25:14]
Maven。

**Rio** [2:25:15]
哈哈哈 。

**吴涛** [2:25:16]
对 ，是是用 Maven 来管理这个软件包的 ， 然后呃我们这个项目大概有 70-80 个呃 Maven module 吧 。

**Rio** [2:25:30]
OK。

**吴涛** [2:25:31]
Maven project。

**Rio** [2:25:32]
嗯哼 。

**吴涛** [2:25:32]
然后呃每次去刷新的时候 ， 就是 Eclipse 要在后台去更新整个节整个项目的 dependency 的时候 ， 可能整个程序可以长达 20 分钟失去响应 。

**Rio** [2:25:46]
哇 。

**吴涛** [2:25:46]
这在 Linux 下面是完全不会出现的 。

**Rio** [2:25:49]
OK。

**吴涛** [2:25:50]
对 。

**Rio** [2:25:51]
这是时限的问题吗 ？

**吴涛** [2:25:53]
呃 。

**Rio** [2:25:54]
它不对 ， 它它应该是 Java 写的 ， 如果虚拟机没有问题的话 。

**吴涛** [2:25:57]
它是 Java 写的 。

**Rio** [2:25:57]
就 JVM 没有问题的话 ，不能不应该出现这种这么大的差异啊 。

**吴涛** [2:26:02]
我觉得肯定是肯定是时限的问题 ， 就是它的它可能 somehow 线程模型不是很不是很科学 ， 导致 UI UI 的线程会会长时间的失去响应 。

**Rio** [2:26:13]
好吧 ，有可能是那个在 Mac 面的那个 Gui 那一套是不是没有弄好 。

**吴涛** [2:26:18]
很有可能 。

**Rio** [2:26:19]
对 ， 就我我其实我有用过一段时间的 Eclipse，因为要给要去阅卷嘛 ， 就是做助教的话要写作号作业 ， 然后就会因为你今天你刚才也讲那个问题嘛 ， 它是有一个这个惯性的 ， 就学生就学校里面老师教用这个 ， 然后学生也要用这个 ， 那我打开它的工程文件 ，因为只能用这个 ，不然的话我还得再去折腾一下它怎么去配置 ， 它每一个工程是怎么样的 。

**吴涛** [2:26:43]
对 。

**Rio** [2:26:43]
对吧 ， 就还是挺坑爹的 。 啊 ， 那我对它的最恶劣的印象就是它实在是太丑了 。

**吴涛** [2:26:51]
哦吼吼吼 ， 这个这个我已经好吧 。

**Rio** [2:26:55]
它它比 Visual， 它比我见过的任何一款编辑器都要丑 。

**吴涛** [2:27:00]
呃 ，因为它对没有一个就是怎么说呢 ， 就是 Eclipse 它它的它的组织模式导致了它必然是这样一个宿命啊 。

**Rio** [2:27:11]
就是它是用的一个哎 ， 它其实你也它也不算是用的是一个跨平台的 Gui 套件吧 ，因为我看它的元素有些还是在 Mac 上是原生的 Mac 元素 ，但是一到它那个编辑器 ， 就是那个 IDE 里面的那些东西 ， 一些部件的时候 ， 你就会明显的发现这和其他系统完全不一样 。

**吴涛** [2:27:30]
嗯 ， 对 ， 没错 。

**Rio** [2:27:31]
呃 ，而且在我不知道 Windows 上面是有没有这个问题 ，但它在 Linux 上面好像它还装的装的挺好的 ， 就模拟的挺好 ，也可能是这个选择 ， 就 GTK 的情况下吧 ， 它还还凑合 。

**吴涛** [2:27:44]
嗯哼 。

**Rio** [2:27:44]
但是这在在 Mac 上或者在 Windows 上， 它就是长得很奇怪 。

**吴涛** [2:27:50]
嗯 ， 这其实可能也是因为就是它它用的那一套叫什么 standard widget SWT。

**Rio** [2:27:56]
啊 。

**吴涛** [2:27:56]
Standard widget toolkit。

**Rio** [2:27:58]
SWIT。

**吴涛** [2:27:59]
SWIT， 对 ，是是一套的确也是一套可能只有 Eclipse 在用的东西吧 ， 还是还是 SWT 好像就是专门为 Eclipse 而而开发出来的东西吧 。

**Rio** [2:28:09]
应该应该是这样吧 ， 我记得我没记错的话 ， 就是它会用这么一套跨平台东西去做 ， 然后搞的就对 ， 虽然在每个平台上你说都长得一样了 ， 没有问题 ， 可是这实在是太丑了 ， 怎么能够是 。

而且而且它那些窗口 ， 你刚才说那个什么 Xcode 的窗口的布局啊 ， 可能不是很合理 ， 对吧 ？ 它起码它好歹还长得还可以 ， 长得还还能看 ， 对吧 ？

**吴涛** [2:28:34]
它它至少是漂亮的 。

**Rio** [2:28:35]
对 ， 这个没错 。

**吴涛** [2:28:36]
就 Eclipse 这种布局 ， 我就是已经不能用用丑来形容了 ， 简直 。

**Rio** [2:28:43]
对 ， 对外贸协会来说 ， 这是非常非常不能忍受的 。

**吴涛** [2:28:45]
对 ，而且你就说这都都什么乱七八糟的玩意儿 ， 它而且它那些各种图标也非常诡异 。

**Rio** [2:28:51]
就是 。

**吴涛** [2:28:52]
就是你会想这是一个什么样的设计师设计出来的图标 。

**Rio** [2:28:58]
好像的确有 ， 你这么一说我也觉得好像是挺奇怪的 。

**吴涛** [2:29:02]
对 ， 就完全不能反映它要代表的那个意思啊 ， 我觉得就是啊 ， 好吧 ，也可能是它那套语汇我没有我至今一至今为止没有理解到的一个一个结果吧 ， 反正 。

**Rio** [2:29:14]
对 ， 这我我想到了一件完全无无关的事情 ， 就是 。

**吴涛** [2:29:19]
嗯 。

**Rio** [2:29:19]
图标 ，其实是图标设计的一个一个一个问题 ， 就是我在大上大学的时候 ，有一个有一天去参加一个呃 Web 设计的一个一个展会之类 ， 展会就是一个一个颁奖会之类的这么一个活动 。

**吴涛** [2:29:36]
嗯哼 。

**Rio** [2:29:37]
然后就坐的时候 ，有一个教美术还是教什么视觉传达那个老师 。

**吴涛** [2:29:42]
嗯哼 。

**Rio** [2:29:43]
在那边指导那个台上的人用 PowerPoint。

**吴涛** [2:29:45]
嗯哼 。

**Rio** [2:29:46]
然后他说一直说点那个酒杯 ， 点那个酒杯 ， 点那个酒杯的图标 ， 然后我想 PowerPoint 上面为什么会有一个酒杯的图标呢 ？

**吴涛** [2:29:58]
结果是哪个图标 ？

**Rio** [2:30:00]
结果是当时的 PowerPoint 呃 2002 还是什么 ， 反正是某一个特定版本的 PowerPoint， 可能现在还是这样的 。

**吴涛** [2:30:08]
嗯哼 。

**Rio** [2:30:09]
就是有一个快捷的图标是进入展示模式 ， 就是把你你平时不是你打开 PowerPoint 不是处于编辑模式吗 ？

**吴涛** [2:30:18]
OK。

**Rio** [2:30:18]
就是左边是 slides， 然后右边是那个正要被编辑的 slides。

**吴涛** [2:30:21]
OK。

**Rio** [2:30:22]
然后你点一下那个图标就可以立即进入放映模式 。

**吴涛** [2:30:26]
对 。

**Rio** [2:30:27]
然后那个图标 ， 那个图标其实是一个呃是一个呃就是下面是一个支架 。

**吴涛** [2:30:35]
啊 ， 那个放映机的吧 ？

**Rio** [2:30:37]
一张白纸 ，不是不是不是放映机 ， 就是那种呃 whiteboard， 早期的 whiteboard 是一张纸 。

**吴涛** [2:30:43]
啊啊啊 。

**Rio** [2:30:43]
就是是一个 board， 然后上面挂了很多纸 。

**吴涛** [2:30:46]
物理的 slides。

**Rio** [2:30:48]
对 ， 物理的 slides。

**吴涛** [2:30:49]
嗯 。

**Rio** [2:30:49]
然后这个 slides 这个这个下面是一个支架 ， 上面是一张纸的这么一个 。

**吴涛** [2:30:54]
远看是一个杯子 。

**Rio** [2:30:55]
图标被那个老师认成了酒杯 。 这件事情一直一直深深的印在我的脑海里 ， 我就觉得对 ， 这交互设计有时候你不会理解 ， 你不会明白你的用户把它理解为什么 。

就比如说又还有一个例子 ， 就是呃 Command and Conquer 里面那个呃有三个工具 ， 最左边是修理 。

**吴涛** [2:31:16]
嗯哼 。

**Rio** [2:31:17]
中间是贩卖 。

**吴涛** [2:31:19]
对 ， 一个钱嘛 。

**Rio** [2:31:20]
就是你可以把自己的建筑卖掉 。

**吴涛** [2:31:21]
嗯 。

**Rio** [2:31:21]
左边是个扳手 。

**吴涛** [2:31:23]
嗯 。

**Rio** [2:31:23]
然后右边是个刀来的标志 。

**吴涛** [2:31:25]
对 。

**Rio** [2:31:25]
然后那我想说呃用扳手可以修理 ， 用刀了不就是买买建筑吗 ？

**吴涛** [2:31:37]
不对不对 ， 反过来 。

**Rio** [2:31:38]
嗯 ， 用刀了可以把建筑卖掉 。

**吴涛** [2:31:40]
嗯 。

**Rio** [2:31:40]
那用扳手难道不就是造一个建筑出来吗 ？

**吴涛** [2:31:43]
嗯哼 。

**Rio** [2:31:44]
然后 。

**吴涛** [2:31:45]
不成 。

**Rio** [2:31:46]
对 ， 我把自己所有建筑卖掉了 ， 我把自己所有的建筑卖掉了 ， 然后试图重新把基地再搭一遍 ， 用扳手 。

**吴涛** [2:31:52]
哈哈哈

哈 。

**Rio** [2:31:55]
对 ， 一上来把自己的大美英拍死 。

**吴涛** [2:31:57]
所以行吧 ， 图标设计还是有个很重要的 。

**Rio** [2:32:00]
对对 ， 交互设计还是很重要的 。 就像你说的 ， 就是有时候就如果你不太明白 jar 这个单词在英语里面可以指代罐子的话 ， 你是不太明白为什么 Eclipse 要把那个那个 jar 文件画成一个罐子 ， 然后里面装着 0 和 1。

**吴涛** [2:32:16]
哈哈哈 。

**Rio** [2:32:18]
的确是挺懊恼的 。

**吴涛** [2:32:19]
对啊 ， 关于 Eclipse 的吐槽还有一个就是它 ， 你不觉得它非常慢 ？

**Rio** [2:32:26]
对啊 ， 我刚才已经说了啊 ， 就是 。

**吴涛** [2:32:28]
就是它的慢不是那种呃可以忍 。

**Rio** [2:32:32]
可以接受的慢 。

**吴涛** [2:32:33]
对 ，不是那种可以忍 ， 就说啊这个点一下可能卡一下这样 ， 它是一种整个流程都会觉得连输入一个字你都会觉得它有点慢的那种慢 ，但可能这次 。

**Rio** [2:32:42]
对 ， 就好像 somehow 你输入一个字符 ， 它要更新整个 UI 的感觉 。

**吴涛** [2:32:45]
对 ， 就是有一种呃粘滞的感觉 ， 我不知道我这么描述准不准确啊 ， 就是你会觉得 。

**Rio** [2:32:50]
对 。

**吴涛** [2:32:51]
你你跟这个 UI 交互的时候 ， 你你在写代码的时候 ， 你永远不可能找到那种流畅的感觉 。

**Rio** [2:32:59]
嗯 ， 没错 ，是这样 。

**吴涛** [2:33:00]
就我一直不明白为什么这当然你可以说这个可能是这个什么用那个 JVM 虚拟机 ， 它可能这个 latency 不如用原生的像 C 或者 C++ 这种不需要 GC 的语言或者这种来的要直接 ，但是这原因我们不管了 ，但是就说这个最终的给我的体验就是我如果可能我肯定不会再想在这里面写东西了 。

**Rio** [2:33:23]
没错 。

**吴涛** [2:33:23]
啊 ， 对 。

**Rio** [2:33:24]
对 ， 就是基本上我也曾经挣扎过 ， 就是我想要切换到那个 IntelliJ 下面 。

**吴涛** [2:33:29]
嗯 。

**Rio** [2:33:30]
但是 B 公司的项目有其实是非常 Eclipse 依赖的 。

**吴涛** [2:33:35]
哈哈哈 。

**Rio** [2:33:35]
就因为是 Legacy Code， 所以然后里面有很多比如说启动项目呀 ， 或者是启动项目可能有十几个吧 。

**吴涛** [2:33:43]
嗯哼 。

**Rio** [2:33:44]
每一个分别启动一个不启动整个组件里面的某一个特定的组件 ， 然后呃打开一个窗口 ， 呃 Windows 之类的 ， 这些东西我基本上直到现在就是快要离职了 ， 我都没有时间去弄明白它到底是启动的哪一个组件 ，但整个程序基本上脱离 Eclipse 是非常非常难以使用的 。

**吴涛** [2:34:06]
嗯 。

**Rio** [2:34:06]
然后难以或者说难以维护的 ，但是我还是成功的做到了在 80% 的时间里面能用那个 Vim 改的部分就用 Vim。

**吴涛** [2:34:16]
哈哈哈 。

**Rio** [2:34:16]
我宁可用 Vim 改完 Java， 然后用那个 syntactic syntactic 去看一下有没有语法错误 ， 然后编译 ， 如果编译不过了我再回去改 ， 我我宁可这样也不愿意去启动 Eclipse。

**吴涛** [2:34:29]
你看这把人逼成什么样子了 。

**Rio** [2:34:31]
对 ， 就可以想象他的 pain as 的指数有多高 。

**吴涛** [2:34:35]
哈哈哈 。 对 ， 反正就是刚才讲了嘛 ， 它没有那种让你很畅快的感觉 ， 所以我很难想象有人会在里面做到出一个好的产品 。

哎 ， 我问你件事情哈 ， 你觉得地球上存在一种人能够理解 Eclipse 所有功能组那些按钮的组合是在干嘛吗 ？

**Rio** [2:34:53]
我觉得 Eclipse 就像 C++ 一样 ， 任何一个说我精通 Eclipse 的人都在扯淡 。

**吴涛** [2:34:58]
哈哈哈 。 所以所以就是没有一个人是理解 Eclipse 所有的按钮或者功能是干嘛的 。

**Rio** [2:35:06]
嗯 ， 可以这样说吧 ， 我相信如果你愿意穷尽你两三年的时间去研究一个版本的话 ， 应该是可以研究透的 。

**吴涛** [2:35:14]
它会更新两三年之间又更新了一个版本 。

**Rio** [2:35:17]
对 ， 现在现在现在版本叫什么 Luna 还是叫什么 ？

**吴涛** [2:35:20]
呃 。

**Rio** [2:35:21]
现在应该已经出 Luna 版本了 。

**吴涛** [2:35:23]
对对对 。

**Rio** [2:35:23]
我还在用之前那个什么 ， 反正木星我们卫星的名字 ， 我的天 。

**吴涛** [2:35:28]
哈哈哈 。

**Rio** [2:35:29]
对啊 。

**吴涛** [2:35:30]
啊 ， 还有一个事情就是 ， 然后据我所知好像 Android 开发就那个什么 Android Studio 好像也是基于 Eclipse 改的是吧 ？

**Rio** [2:35:39]
对 ，Android 的开发最开始是一定要装 Eclipse 的插件 ， 我觉得当时就已经 turn me off 了 ， 就我那我这辈子都不要为 Android 开发程序了 。

**吴涛** [2:35:48]
哈哈哈 。

**Rio** [2:35:48]
居然要用 Eclipse。

**吴涛** [2:35:50]
对 。

**Rio** [2:35:50]
然后 。

**吴涛** [2:35:51]
嗯 。

**Rio** [2:35:52]
对 ，而且 Google App Engine 其实早期也是支持你用一个 Eclipse 的插件来 。

**吴涛** [2:35:59]
因为它支持那个 Java 的那个运行态嘛 。

**Rio** [2:36:02]
Java， 对对 。

**吴涛** [2:36:03]
对 ， 我我我就那个 Android 那期我一直有一个假说哈 ， 那也肯定是不对的 ，但是我我我倾向于这么想 ， 就是你你我们老是说这个什么安卓的上面的应用整体来说不如 iOS 上面的好看 。

**Rio** [2:36:19]
嗯哼 。

**吴涛** [2:36:19]
我在想是不是 。

**Rio** [2:36:20]
和开发工具有关吗 ？

**吴涛** [2:36:21]
你你想象一下， 如果你一个作为一个 ， 比如说你是一个就是什么所谓的独立开发者 ， 那那种大公司你说有单独的美工那种东西再说 ， 就是你作为一个啊这种小的两三个人或者一个人的团队啊 ，不是这个团队 ， 就是两三个团队和一个人你自己一个独立的就单一单人开发者 ， 你你面对着这么一个丑陋的一个一个界面 ， 你有心情做出一个很好很漂亮的产品吗 ？

我一直很怀疑这件事情 ， 起码我每次看到 Eclipse 的时候 ， 我的那个心态就觉得很焦躁 ， 很很焦虑 。

**Rio** [2:36:53]
没错 。

**吴涛** [2:36:54]
所以这里可能会很多影响很多心情吧 ， 我觉得 。

**Rio** [2:36:58]
对 ， 这就好像呃 Xcode 再怎么丑 ， 它都不再怎么不好用 。

**吴涛** [2:37:03]
好像还长得可以的 。

**Rio** [2:37:04]
它那个画画窗体的部分还是比较比较漂亮的 。

**吴涛** [2:37:07]
对 。

**Rio** [2:37:08]
但是反过来在 Windows Studio 下面那个一显示一个一个一个 Windows Form 1， 然后里面一堆小点 ， 我立刻就觉得我靠是什么 。

**吴涛** [2:37:19]
就它那个小点作用是为了让你定位对吧 ？

**Rio** [2:37:22]
是定位用的 ， 就是去 grid。

**吴涛** [2:37:24]
但是明显不如那个 Xcode 那个叫什么那个那个线条 guideline 嘛 ， 好用 。

**Rio** [2:37:28]
漂亮 ， 对 。

**吴涛** [2:37:29]
而且长得丑 。

**Rio** [2:37:30]
但你其实也不能一概而论 ， 对吧 ？ 比如说 App App App App Store 里面同样有非常非常多丑的令人发指的 App。

**吴涛** [2:37:37]
哈哈哈 。

**Rio** [2:37:38]
而呃那个安卓的下面也的确有比较精美的 。

**吴涛** [2:37:42]
肯定肯定是有这个什么例外的 。

**Rio** [2:37:44]
对 ， 反例永远是存在的 ，但我觉得我承认你说的有道理 ， 就是开发者的如果面对一个丑陋的工具 ， 那做出来的东西很有可能也是丑陋的 。

**吴涛** [2:37:53]
什么近朱叫赤 ， 近墨叫黑 。

**Rio** [2:37:56]
对 。

**吴涛** [2:37:57]
远离 Xcode， 珍爱生命 。

**Rio** [2:38:00]
哈哈哈 ， 别这样别这样 。 不过如果说你是一个 Java 开发者 ， 然后你想要尝试呃一款 IDE 的话 ， 如果没有现有那个 ， 如果没有现有项目的呃限制 ， 那真的 IntelliJ 基本上是非常适合的一个选择 ， 我觉得 。

就呃因为或者说在 Java 开发 ，以我有限的粗浅的 Java 开发经验来看 ，IntelliJ、NetBeans、Eclipse 基本上是三大最常被用到的 Java IDE，而在这里面 IntelliJ 算是一个非常用心做的产品 。

**吴涛** [2:38:37]
OK。

**Rio** [2:38:37]
而且 IntelliJ 背后的这个公司呃叫什么 JetBrains。

**吴涛** [2:38:42]
嗯哼 。

**Rio** [2:38:43]
他们还做了很多其他的很惊艳的产品 ， 比如说有 PHP 的 PHPStorm。

**吴涛** [2:38:48]
嗯哼 。

**Rio** [2:38:49]
有呃 C++ 的叫做 CLine。

**吴涛** [2:38:54]
嗯哼 。

**Rio** [2:38:55]
就是不是不是不是海狮的 CLine，而是 C 然后 Line， 就是 C 狮子 。

**吴涛** [2:39:00]
OK。

**Rio** [2:39:01]
然后还有不包括 JetBrains 还做了一款 Object C 的那 IDE， 我觉得这个也很 。

**吴涛** [2:39:08]
哈哈 。

**Rio** [2:39:08]
很很让人震惊啊 ， 就是 。

**吴涛** [2:39:10]
是 Mac 下面的吗 ？

**Rio** [2:39:11]
包括那个 C 开发者 ， 对 ，Mac Mac 开发者本身就已经是一个小群体了 。

**吴涛** [2:39:15]
对啊 。

**Rio** [2:39:16]
而这个小群体里面 。

**吴涛** [2:39:18]
还要再分一杯 。

**Rio** [2:39:19]
用 Xcode 这种舍我其谁的工具的人其实其实也习惯了没有选择 ，而你居然为这为这么样一群人开发了出了这么一款 IDE 来 ，而且我用了用感觉还不错 。

**吴涛** [2:39:32]
哈哈哈 。

**Rio** [2:39:33]
也挺难得的 。

**吴涛** [2:39:35]
对 。 刚才你也说嘛 ，Xcode 有那么多问题 ， 所以它能做一个 alternative 应该是挺好的 。

**Rio** [2:39:41]
没错 ， 然后 JetBrains 还有 Python 的 IDE， 就是 Python 如果我一定要用一个 IDE 的话 ， 我应该应该会首先想到那个 Intelli 呃 JetBrains 出的这个叫做 PyCharm 的 IDE。

**吴涛** [2:39:54]
嗯 。

**Rio** [2:39:54]
也是蛮好的 。

**吴涛** [2:39:54]
嗯哼 。

**Rio** [2:39:55]
对 。

**吴涛** [2:39:57]
啊 ，PyCharm 也是他们出的原来 。

**Rio** [2:39:58]
啊 ，PyCharm 是他们出的 。

**吴涛** [2:40:00]
我知道 ， 我知道 ， 这个好像知道还有不少那个 Python 的用户在用这个 。

**Rio** [2:40:05]
没错 。

**吴涛** [2:40:05]
感觉 。

**Rio** [2:40:05]
对 ， 相当好用其实 。

**吴涛** [2:40:06]
对 。

**Rio** [2:40:06]
对 ，而就 IntelliJ 呃支持多种配色 ， 然后要比 Eclipse 快很多 ， 这是很关键点 ， 就比比 Eclipse 快很多 。

**吴涛** [2:40:14]
嗯哼 。

**Rio** [2:40:14]
然后它的那个智能补全也是相当的聪明 ， 最大的问题可能就是 IntelliJ 本身有两个版本 ， 一个是社区版 ， 免费的 ，但是缺乏很多很多功能 ， 比如说尤其是你要做 Java EE 开发的话 ， 要用到很多就 whatever 奇奇奇怪怪的功能 ， 那个 CE 版本是没有的 ，Community Edition 是没有的 ， 你必须花钱去买那个 IntelliJ 的 。

**吴涛** [2:40:41]
啊 ， 它是 dual license 是吧 ？

**Rio** [2:40:44]
对 ，dual license。

**吴涛** [2:40:45]
OK。

**Rio** [2:40:45]
当然你你可以以学生身份去买 ， 应该可以买 ， 你不要不你帮我买一个吧 。

**吴涛** [2:40:50]
可以啊 。

**Rio** [2:40:50]
回头我给你钱你帮我买一个 。

**吴涛** [2:40:52]
好 。

**Rio** [2:40:52]
我还挺想弄一个 。

**吴涛** [2:40:53]
嗯 。

**Rio** [2:40:53]
当然我将来做 Java 的可能性也未乎其非 ，不过呃对 ，JetBrains 曾经在 2014 年、2012 年的时候搞过一个大促销 ， 就是呃世界毁灭的那一天 ， 就是传言玛雅人说世界要毁灭那一天 ，他们搞了一个大促销 。

**吴涛** [2:41:10]
嗯哼 。

**Rio** [2:41:10]
所有的那个 IDE 的 license 呃好像统一价 5 收还是多少我就可以买下来 ， 我非常后悔错过那次大促销 。

**吴涛** [2:41:19]
如果世界都毁灭了 ， 你买个 license 干什么 ？

**Rio** [2:41:22]
哈哈哈 ， 说的也是 ， 当时就赌一把赌输 ， 世界没有毁灭我很伤心 。

**吴涛** [2:41:28]
哎 ， 别别别 。

**Rio** [2:41:30]
哈哈哈 。

**吴涛** [2:41:31]
别了 。

**Rio** [2:41:33]
OK。

**吴涛** [2:41:33]
对 。 啊 ， 还有吗 ？ 差不多这期 。

**Rio** [2:41:35]
没有了 。

**吴涛** [2:41:36]
好 。

**Rio** [2:41:36]
对 ， 我们本来还想说一下， 就是简单的说一下应该选择编辑器还是选择 IDE。

**吴涛** [2:41:41]
啊 。

**Rio** [2:41:42]
如果你是一个编程初学者的话 。

**吴涛** [2:41:43]
这个 。

**Rio** [2:41:44]
但其实也不方便展开了 ， 我觉得简单一句话就是选你觉得舒服的一件一个一个一个一个方式吧 ，因为有时候我觉得嗯有些人喜欢 IDE 的原因其实就是 IDE 有一种仪式感 。

**吴涛** [2:41:59]
嗯哼 。

**Rio** [2:41:59]
就是你打开 IDE 你会觉得自己切换到一种工作的状态 。

**吴涛** [2:42:02]
对 。

**Rio** [2:42:02]
而你仅仅使用一个单独的编辑器的话 ， 你好像我到底在干嘛啊 ？

**吴涛** [2:42:07]
玩票 。

**Rio** [2:42:07]
写这么一个对写好像一个文件在编辑器里面出现和在 IDE 里面出现 ， 或者或者是你说在一个编辑器的编辑窗口里面出现和在一个 IDE 的所谓啊什么工程管理器里面 。

**吴涛** [2:42:21]
庄重感不一样啊 。

**Rio** [2:42:22]
对 ， 庄重感是不一样的 。 这个对这个细小的心理上的差别其实还是挺重要的 。

**吴涛** [2:42:27]
嗯 。

**Rio** [2:42:28]
对 。

**吴涛** [2:42:29]
对 。

**Rio** [2:42:30]
你是你我觉得你应该是会选择编辑器吧 ？

**吴涛** [2:42:33]
我没有需要用到 IDE 的场合啊 ， 起码 。

**Rio** [2:42:35]
对 ， 这也是 。

**吴涛** [2:42:36]
对 ， 所以没有需求 。

**Rio** [2:42:37]
也许有一天你你终于走入这工业界 ， 你会觉得 IDE 是一个

你 and love love it and hate it。

**吴涛** [2:42:48]
对 。

**Rio** [2:42:49]
就是又爱又恨的这种感觉 。

**吴涛** [2:42:52]
好吧 ， 我在我在想象一下会有什么场合 ， 我看最可能目前最靠谱的场合是我 ，因为我是想学那个就是 iOS 开发嘛 。

**Rio** [2:43:01]
对啊 。

**吴涛** [2:43:01]
然后可能会接触 X，其实 Xcode 之前也已经用过了 ， 就是写作业的时候 ， 还有那个 Eclipse 也也用 ， 就是给别人改 ， 耗别人作业的时候用的 。Visual Studio 好像还没有碰过 ， 或你不打算碰了 ，但是就就两个来讲 ， 可能 Xcode 会是如果要用 IDE 的话 ， 可能会是 Xcode 吧 。

**Rio** [2:43:19]
嗯哼 。

**吴涛** [2:43:19]
对 ， 可以去试一下， 我希望等我用 。

**Rio** [2:43:23]
Have fun。

**吴涛** [2:43:24]
等我用到的时候它就不要再那么不稳定了 。Hopefully。

**Rio** [2:43:28]
对 ， 就你就最好坚持用那个比较不稳定的版本 ，而不要用那个更不稳定的版本 。

**吴涛** [2:43:34]
对 ， 我我这个我我一般还是选择不折腾的 ， 就是一定用官方发布的稳定版 ， 什么 。

**Rio** [2:43:40]
对 。

**吴涛** [2:43:40]
Developer preview 什么离我远一点 。

**Rio** [2:43:43]
对 ，Xcode 用户最悲惨的时刻莫过于苹果说 Xcode 新版出了 ， 请你升级 ， 升级之后发现它一直 crash。

**吴涛** [2:43:51]
哈哈哈 ， 对 ， 这是一个非常令人讨厌的事情 。

**Rio** [2:43:56]
嗯哼 。

**吴涛** [2:43:57]
好吧 ， 那今天先这样 。

**Rio** [2:43:59]
好吧 ， 这一次时间也蛮长的 ，不知道最后会剪出来多久 。

**吴涛** [2:44:05]
呃 ， 非常凑巧的是 ， 本期节目录制完成之后的周三 ，也就是 11 月 12 日， 呃 ， 微软将其 .NET 平台的服务器端开源 ，并且宣称会扩展呃支持 Linux 和 macOS 平台 。

呃 ， 与此同时， 微我们提到的这个 Visual Studio 也推出了一个叫做 Community Edition 的呃 Community Edition 2013 的版本 。 呃 ， 它是免费的 ， 对 ， 所以呃 ， 我跟 Rio 大概也都会去下载 ， 然后试着用一下看看观感如何

### 尾声

**吴涛** [2:44:46]
。

---

本节目库由 PodHood（https://podhood.com）提供支持——播客网站平台。
