17611538698
info@21cto.com

用 BASIC 编写的 Vi 是什么样子

编程语言 0 14 14小时前

导读:Yabasic 的几百行代码重现了一些重要且关键的操作。

图片

资深编辑器 Vi 今年迎来了 50 岁生日。那么,还有什么比用 BASIC 语言编写一个新版本是更好的庆祝方式吗?

这段代码由开发者李·图斯曼(Lee Tusman)编写,他这个人喜欢特立独行,不拘泥于最新的 IT 行业潮流。

图斯曼并非严格意义上的专业程序员,他的专业背景是艺术。他从 2025 年才开始研究 BASIC 语言。确切来说,他研究的是 Yabasic,一个适用于 Unix 和 Windows 的开源 BASIC 解释器。

“对于一款现代 BASIC 语言来说,它用起来相当有趣,”图斯曼这样写道

“我制作了自己的赛博朋克赛车游戏,一款受 UFO50 和 Flash 游戏 Quibble Race 启发而开发的命令行游戏。我还修改了文本版《俄勒冈之旅》的内部机制,并制作了一个克隆版,一个简化版的经济模拟游戏《毒品战争》。”

这一切要素促使图斯曼使用 BASIC 语言编写了一个老牌文本编辑器 Vi 的版本,因为……嗯……它当时就在那里。

“我使用 Neovim(之前叫 Vim)已经很多年了。我以前从未编写过文本编辑器。但我认为尝试自己实现一个可能会很有趣。”

他坦承受到 Offpunk 等基于文本的浏览器的启发,“我想,我或许可以用最少的 Vim 命令构建一个极其简单的编辑器。这能有多难呢?”

在这种心理状态下,其实任何事都不会太难。图斯曼只用了几百行 Yabasic 代码就实现了一个最简单的空白编辑页面,之后他开始添加一些简单的命令。很快地,编辑器就具备了打开文件、新建文件和保存文件的功能。

“这让我非常满意,因为我现在能够打开我以前的 vi.bas 程序的源代码,并进行探索和编辑。”

图斯曼的编辑器现在还没有换行功能,并限制为 80 个字符——但是从 GitHub 存储库启动代码,就能运行和实现出一个相当不错的、与这款历史悠久的编辑器相似的程序,以及它许多有时晦涩难懂的快捷方式。

当有人询问图斯曼为何选择 Vi时,他这样说:“我选择 Vi 是因为我一直在用它,而且一旦你习惯了它,就很难再想用其他类型的编辑器了。”

那么还缺少什么功能呢?

“很多东西!但我刻意不打算重建一个完整的 Vim。我只是想要一个尽可能实用、功能尽可能齐全,且程序尽可能简短易懂的版本。值得注意的是,它的大部分功能都是‘如果按下这个键,就执行这个操作’。”

至于未来版本的开发,图斯曼说:“我不知道还能添加多少功能。我使用这个程序才一周左右,但还没发现有什么功能是我完全怀念Neovim的。我只是猜测,也许我会选择性地重新添加行号显示功能,而且我还没找到一种跨平台都能解决屏幕缩放时出错的方法。”

图斯曼在博客中称,虽然这段代码算不上美观,但它功能齐全,而且可以供大家进行修改。此外它是公共领域的代码,因此如果某个 BASIC 语言高手需要添加某个功能,就可以对其进行 fork。

查看程序源代码勾起这位黑客的一些回忆,他在 20 世纪 80 年代初就开始接触 TI BASIC,但是自从 60 年前卸载 Visual BASIC 后,就再也没有碰过这种编程语言了。

“这不仅是我找到的用 BASIC 语言编写的最好的 Vi 克隆程序,”图斯曼自豪地写道,“我认为它是唯一的一个!”

作者:洛逸

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信