Vim を Javascript で書き直しました! Web ブラウザ内で Linux を操作!

Vim を Javascript で書き直しました! Web ブラウザ内で Linux を操作!

Dennis Kane LOTW Github logo

私たちは皆、お気に入りのエディターIDE が大好きです。

長年の経験から、 edエディタ、 vim、 emacsなど、数え切れないほど多くのエディタが特に人気があることを知りました。皆さんのお気に入りのエディタやIDEについて触れていなかったら、申し訳ありません!

VimとEmacsのユーザーは、複雑な設定やアドオンに特に長けています。こうした複雑な設定やアドオンによってプログラミングが容易になるという主張もあります。VimやEmacsを最適な設定方法に決めるのは、難しくて時間がかかります。しかし、実際に設定をしたり、賢い人たちがエディタやIDEを使って素晴らしいことをしている様子を読むのは、とても楽しいものです。

今朝のHacker News (HN)に、またもやvimに関する記事が掲載されていました。コメント欄で、ある人がvimをJavaScriptで書き直したと書いてあるのに気づきましたもちろん、コメント欄の「試してみる」リンクをクリックせずにはいられませんでした!ブラウザでJavaScript版vimを試してみたい方は、まずHNのコメント欄で、`import fs`コマンドのヒントを読んでみてください。コメント欄のリンクはhttpでしたが、httpsでも動作するようです。

さらにグーグルで調べてみると、HNコメントの著者はLinux On The Web (LOTW) GithubリポジトリのオーナーであるDennis Kane氏であることが分かりました。README.mdファイルには、「LOTWは、Linux/Unix/POSIX (*nix) のテキストベースのコマンドと設定の精神を現代のWebプラットフォームに移植することを目的としています」と説明されています。

LOTWは「永続的なクライアント側状態」を提供します。言い換えれば、「ブラウザのサンドボックス化されたローカルストレージに保存され、ネットワークの状態に関係なくアクセス可能」です。LOTWではテキストベースの環境が重要ですが、グラフィカルインターフェース(GUI)も備えています。

LOTWに関する詳細は、LOTWウェブサイトの「About」ページをご覧ください。 「About」ページの背景セクションでは、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の投稿のある段落には、MITのオペレーティングシステム講座の最初の講義の要点が簡潔にまとめられています。

しかし、ベアカーネルだけでは完全なOSを形成できません。なぜなら、ベアカーネルはハードウェアアクセスのための外部からの要求(通常はシステムコールの形で)を必要とするからです。これらの要求は、アプリケーション開発者が依存するソフトウェアライブラリ(Windowsではダイナミックリンクライブラリ(*.dll)または*nixでは共有オブジェクト(*.so))から提供されることが多いです。こうした入力がなければ、カーネル単体では実用上何の役にも立ちません。

LOTWの素晴らしいところは、ブラウザの中に魔法のように現れることです。OSのインストールもSSHキーも不要です。LOTWのおかげで、OSは時代遅れなのかもしれないと改めて考えさせられました。LOTWは、いわばすべてを「ゼロクリック」でインストールできるのです。

ブラウザでLOTWが動いているのを見て、Infernoを思い出しました。もちろん、LOTWとInfernoは内部的には大きく異なりますが、ブラウザでコマンドプロンプトを開くという体験は、どういうわけか全く同じに思えました。

最近はブラウザ上でターミナルやGUIを使うアプリが数多くあります。Google Cloud ShellAWS Cloud9、そしてあらゆる種類のブラウザベースの開発環境があります。サーバーレスコンピューティングVisual Studio Codeさえブラウザ上で使えるのです。もしかしたら、今やあらゆるコードエディタはVSCode.devに追い抜かれていると言えるかもしれません。誰かがLOTWに移植してくれるまでは。🤩

vim.jsからのコードスニペット



おすすめの記事