用 JavaScript 重写了 Vim!在 Web 浏览器中运行 Linux! 用 JavaScript 重写了 Vim!在 Web 浏览器中运行 Linux!

用 JavaScript 重写了 Vim!在 Web 浏览器中运行 Linux!

Dennis Kane LOTW Github logo

我们都喜欢自己最喜欢的编辑器集成开发环境!

这些年来,我发现大家特别喜欢ed 编辑器、 vim、 emacs 等等,还有很多其他的编辑器,不胜枚举。如果我没提到你最喜欢的编辑器或 IDE,请见谅!

Vim 和 Emacs 用户尤其擅长复杂的配置和插件。他们认为这些复杂的配置和插件能让编程更轻松。如何最佳地配置 Vim 或 Emacs 是一项具有挑战性且耗时的任务。但配置过程本身也充满乐趣,阅读那些聪明人如何利用编辑器和 IDE 实现各种精彩功能也令人着迷。

今天早上Hacker News (HN)上又有一篇关于Vim 的文章。我在评论区偶然看到有人提到他用JavaScript 重写了 Vim!当然,我忍不住点开了评论里的“试玩一下”链接!如果你也想在浏览器里体验一下 JavaScript 版的 Vim,请先查看 HN 上的评论,了解一下关于导入 `import fs` 命令的提示。请注意,评论里的链接是普通的 http 链接,但 https 链接似乎也能用。

进一步搜索显示,HN 评论的作者是 Dennis Kane,他是Linux On The Web (LOTW) Github 代码库的所有者。README.md文件解释道:“LOTW 致力于将 Linux/Unix/POSIX (*nix) 基于文本的命令和配置理念移植到现代 Web 平台。”

LOTW 提供“持久客户端状态”。换句话说,它“保存在浏览器沙盒化的本地存储中,无论网络状态如何均可访问”。虽然 LOTW 的文本环境很重要,但它也提供图形界面 (GUI)。

更多关于 LOTW 的信息可以在LOTW 网站的“关于”页面找到。 “关于”页面的背景部分讨论了 LOTW 对 Javascript (又名 ECMAscript)V8 Javascript 引擎的使用。

本地安装包括克隆 LOTW Github 仓库,并使用Node.js 启动本地 LOTW 站点:

oot@darkstar:~/LOTW# node site.js
Site server listening at http://localhost:8080
^C
root@darkstar:~/LOTW

丹尼斯还在Quora 上发帖讨论了 LOTW。该 Quora 帖子中的一段话有效地总结了麻省理工学院操作系统课程的第一讲内容:

然而,裸内核无法构成完整的操作系统,因为它需要外部生成的硬件访问请求作为输入,这些请求通常以系统调用的形式出现,而这些系统调用往往来自应用程序开发者所依赖的软件库(Windows 中的动态链接库 (*.dll) 或 *nix 中的共享对象库 (*.so))。如果没有这些输入,内核本身没有任何实际用途。

LOTW 最棒的地方在于它仿佛变魔术般出现在我的浏览器中。无需安装操作系统,也无需 SSH 密钥。LOTW 让我再次思考操作系统是否已经过时。LOTW可以说是所有东西都实现了“零点击”安装。

在浏览器中运行 LOTW 让我想起了Inferno。当然,LOTW 和 Inferno 的底层机制截然不同,但在浏览器中打开命令提示符的体验却感觉完全一样。

如今,浏览器端或图形用户界面应用层出不穷。有Google Cloud ShellAWS Cloud9,以及各种各样的基于浏览器的开发环境。我们甚至还有浏览器版的无服务器计算和 Visual Studio Code。嗯,或许现在所有代码编辑器都已经被 VSCode.dev 超越了。除非有人把它移植到 LOTW 上。🤩

来自 vim.js 的代码片段