Windows 11 25H2にも含まれるMS-Editがバージョンアップ
以前紹介した「MS-Edit」がVer.2.0にバージョンアップしている。
●Microsoftが作るコンソールエディタがこの時代に復活
https://ascii.jp/elem/000/004/274/4274716/
MS-Editは、Windowsターミナルの中で動作するテキストエディタで、Windows 11 Ver.25H2に含まれている。ただし、搭載されているのはVer.1.2.1である。MS-Edit Ver.2.0の最大の特徴は、文法ハイライト機能が搭載されたことだ。
●Release 2.0.0 - A compiler for syntax highlighting!
https://github.com/microsoft/edit/releases/tag/v2.0.0
文法ハイライトとは、言語のキーワードや文字列、数値、クラスなどのオブジェクトなどを色分けして表示するもの。MS-Edit 2.0は、以下の表の言語、データ形式に対応している。
言語やデータ形式の判定はファイル拡張子を使う。また、MS-Edit 2.0の文法ハイライトは文法を理解しているわけではなく、正規表現を使ったパターンマッチングをして、一致した部分を指定した色で表示するもの。このため、Visual Studioのようなキーワードなどの補完機能は持たない。
この文法ハイライトでは、LSH(Lightweight Syntax Highlighter)という独自の仕組みを使う。LSHはlshプログラムファイルで文法ハイライトを定義する。これをコンパイルし、仮想命令からなるプログラムに変換する。これは、高速に処理するためだと考えられる。あるいは、将来的にはコンパイル後の仮想コードだけをアップデートするためなのかもしれない。
MS-Edit 2.0は、この仮想コードプログラムを使って、キーワードなどの表示色を指定する。
lshプログラムファイルには、対象となるファイルフォーマットや言語を判別する拡張子やファイルパスなどが記録されている。LSHはまずこれを使い、対象がLSHで処理可能かどうかを判定する。対象であれば、ファイル内の各行の先頭から末尾に向かって調べていき、定義された正規表現がマッチするかどうかを判定する。もし、一致があれば、定義された色や文字属性で一致部分を表示する。また、ブロック注釈のような複数行にまたがるパターンマッチングも可能だ。
このほか、他のlshプログラムファイルで定義されている言語やファイル形式を関数のように呼び出せる。LSMはMarkDown形式に対応しているが、MarkDownのPREブロックに指定されている拡張子を見て、PREブロックを該当言語で文法ハイライトすることができる。
ただし、MS-Edit 2.0では、表示のパターンは以下の表にあるものだけだ。lshプログラムでは、このパターンから1つ選んで指定する。
現在割り当てられているのは、文字色と文字属性(太字、イタリック、下線)のみ。文字色は16色あるが、使われているのは明るい色5色、通常色1色である。表をみるとわかるように、名称は異なっていても、現時点では色しか指定されていない。
lsmプログラムのステートメントには、以下の表のようなものがある。
特定目的の言語であるため、少し特殊な感じはあるものの、基本的には、条件判断や変数、ループなどを備えた言語である。ただし、言語仕様としては、完全な形(たとえばBNFによる定義など)で公開されているわけではないので、実際に使うとなると、既存のコードを参照しつつ、場合によってはコンパイラのソースコードを見る必要があるだろう。前掲の表にもソースコードを参照した部分がある。
なお、細かく見たわけではないが、変数に対する式は、いまのところ足し算のみで「var 変数名 = 定義済み変数名 + 1」のような記述が使えるようだ。このあたりは、GitHubの以下のfrontend.rsにある。
●lshプログラムファイル
https://github.com/microsoft/edit/tree/main/crates/lsh/definitions
●frontend.rs
https://github.com/microsoft/edit/blob/main/crates/lsh/src/compiler/frontend.rs#L619
実際にlshプログラムを作ってみたいところだが、今回は時間がなかった。今後の課題としたい。
これまで、コマンドラインでテキスト編集が必要なとき、vimやemacsなどの著名なエディタを導入するか、GUIのVSCodeなどを呼び出して利用していた。
その点、MS-EditはWindows 11 Ver.25H2からは組み込みになったため、コマンドラインでeditと入力すれば、いつでも起動できる。今回シンタックスハイライトが導入されたが、おそらく今後も新機能が導入されると思われる。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第535回
PC
WSLコンテナーのプレビューを試す 今年はWSLに動きがありそうだ -
第534回
PC
Windows 11におけるアプリインストーラーとwinget -
第533回
PC
PCの世界ではすっかり存在感が薄くなった光学メディアをあらためて整理 -
第532回
PC
モニターの情報が含まれる「VESA EDID」をWindowsで調べる方法 -
第531回
PC
Windowsのコンソール上でUnix/Linuxの標準的なコマンドを動かす「Windows CoreUtils」 -
第530回
PC
Windows 11でタスクバーの位置の移動機能が復活するのは結局どうなった? プレビュー版の現状を見る -
第529回
PC
Windowsの標準スクリプト言語であるPowerShellの現状をあらためて紹介する -
第528回
PC
Windows 11の標準機能でメモリに問題がないかを診断する -
第527回
PC
Windowsがクラッシュする原因を究明する方法 AIを活用すると結構早い -
第526回
PC
今年6月にPCが起動しなくなる心配はないが、セキュアブートが機能しないとWindowsのセキュリティ機能は一部使えなくなる - この連載の一覧へ















