为什么我要教Vim

2020-11-15 14:14:31

人们为什么使用VIM的原因已经被相当广泛地讨论过了,所以我想我应该花一点时间来解释为什么我要教我的高中生VIM,即使是在2020年。

这一切都始于2008年金融危机后不久,我被分配到一个由九年级到十二年级的混合班学习计算机科学。嗯,金融危机第一次让我开始教授使用VB6.0和Windows瘦客户机编程的入门课程,这本身就是一种体验(部分归功于Conficker病毒)。这段经历值得写一篇单独的博客文章,这也是为什么我的专长之一是教授计算机安全的一个很好的原因。

因此,我与所有级别的学生在一起,包括AP CS A(读:AP CS Java)和过时的Windows PC(至少瘦客户端已经消失)。我不会安装任何软件,想教C语言,不得不教Java,而且我的选择很少(那是在基于Web的IDE在线出现之前的日子)。

多亏了我在加州大学洛杉矶分校(UCSC)的出色教育,我有过使用UNIX命令行(主要是Sun工作站)的经验,所以这不是问题。我曾在20世纪90年代尝试过Linux,并取得了一定的成功,但我已经有近10年没有接触过它了。所以我在公寓外面的垃圾堆里发现了一台旧的奔腾2,安装了一个硬盘,并尝试了这个(对我来说)新的Linux版本,奇怪的是,它叫做Ubuntu。

我很快意识到这台机器可以让所有的学生同时编程,我发现了一个奇迹,那就是PuTTY.exe(它不需要任何安装就能运行!)。把过时的PC连接到服务器上,很快我的学生们就开始编程了。

我为什么要教他们VIM?我希望我可以说,我当时苦恼于所有的选择,并认为vim是最好的教学解决方案,但现实情况是,我在大学里使用的是vi,因为我父亲教我vi。你看,我很幸运有一位在这个行业工作的父亲,在文本编辑史上甚至可以说是一个脚注。所以我教vi(后来的vim),因为这是我所知道的。在FIRE…的许多计算机科学教师的试验中,一个持续不断的主题。教授一些东西,因为这是他们所知道的。我甚至认为,更重要的是教师了解编辑器,特别是编程语言,而不是把任何重要的东西都放在一个正确的编辑器或所有教师都应该教授的一种正确的语言上。

然而,多年后,我仍在教授vim和命令行。因此,以下是我如何证明我的决定是合理的,即使只是对我自己。

只是起作用了。每次我去一所新学校,安装运行IDE所需的软件都需要时间。我记得走进一所学校,AP CS A班级在Mac OS X上挥舞着Eclipse,因为学生们需要(而不是拥有)管理员访问权限。在我目前的工作中,我有一个令人惊叹的技术部门,但即使是在这里,我们也花了几周的时间来弄清楚如何在学生的MacBook Air上部署Visual Studio代码,然后我们必须弄清楚如何部署Python3和Java。所以没有混淆,我教授VIM和许多IDE,我完全相信教授多平台和多IDE是我的责任,但CLI和VIM永远是我的安全网。

我的学生可以在现在基于云的CLI Linux机器上用任何语言编程(谢谢Linode和Digital Ocean--这两家公司都提供每月5美元的套餐)。顾客快乐!)。通过使用CLI,我几乎可以支持任何类型的电脑连接(包括iPad,尽管缺少虚拟Esc键让我作为VIM用户抓狂,还有Chromebook)。学生们可以从世界的任何地方进行连接,一切都很顺利。在流行病的远程和混合学习体验中,所有这些都变得极其重要。这一切都是可能的,因为学生们使用了VIM。

我跟踪了很多主修CS的学生,他们都非常感谢我教他们VIM和CLI。太多的大学以集成开发环境(IDE)启动CS1,然后用CLI将CS2学生推入困境。并不是每个人都像我一样幸运,因为我有一个精通CLI的父亲。

是的,现在有在线IDE,但我发现这些IDE充满了它们自己的陷阱、隐私问题和成本,并发现使用它们做任何高级工作即使不是不可能的话也是非常困难的。

另外,需要说明的是,Nano和Emacs在CLI Linux环境中都能很好地工作,我不认为教师应该使用VIM而不是那些同样可以接受的命令行文本编辑器,除了一个小问题。大多数人都同意,计算机安全很大程度上需要命令行和文本编辑器的知识。我总是告诉我的学生,他们很可能会发现一个已经安装在机器上的编辑器是vim,如果你不得不安装另一个编辑器,那真是糟糕的一天。对于对道德渗透测试…感兴趣的学生来说,这可能只是一个问题