Microsoft Edit
(github.com/microsoft)- Microsoft Edit は、シンプルな編集ニーズのためのエディタで、classic MS-DOS Editor への敬意を示しつつ、VS Code に似たモダンなインターフェースと入力操作を提供する
- 目標は、ターミナルに慣れていないユーザーでも簡単に使える アクセシビリティの高いエディタ を提供すること
- Windows では WinGet、macOS では Homebrew、Linux ではディストリビューションのバイナリがない場合や自分でビルドしたい場合にインストールスクリプトで導入できる
- Rust で構築され、nightly Rust の設定はバイナリサイズを大幅に削減し、性能をわずかに改善する方法として推奨されている
- パッケージ管理者は実行ファイル名の衝突の可能性から
editではなくmseditの名称が推奨され、検索/置換機能には ICU ライブラリ設定が影響する
Microsoft Edit の目的と性格
- Edit は「simple editor for simple needs」を目標とするシンプルなエディタ
- classic MS-DOS Editor への敬意を示しつつ、モダンなインターフェースと VS Code に似た入力操作を提供する
- ターミナルに慣れていないユーザーでも簡単に使える アクセシブルなエディタ を志向している
インストール方法
- バイナリは Releases page からダウンロードできる
-
Windows
- 最新バージョンは WinGet でインストール可能
winget install Microsoft.Edit -
Linux
- ディストリビューションがバイナリを提供していない場合や、自分でビルドする場合はインストールスクリプトを利用できる
- 必要条件は Rust、C コンパイラ、ICU、curl または wget、tar
- デフォルトのインストールでは
mseditを~/.local/binに配置する
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh- 追加フラグとして
--devは main ブランチから直接ビルドし、--systemは/usr/local/binにインストールする
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh -s -- --dev --system -
macOS
- 最新バージョンは Homebrew でインストール可能
brew install msedit
ビルド方法
- ビルドには Rust のインストールとリポジトリのクローンが必要
- nightly Rust を使う場合は、次のコマンドで release ビルドする
cargo build --release --config .cargo/release.toml - stable Rust を使う場合は、
RUSTC_BOOTSTRAP=1環境変数を設定して nightly ビルド手順に従う方法が推奨される- この方法はバイナリサイズを大幅に削減し、性能をわずかに改善する
- 追加設定なしで stable Rust でビルドする場合は、次のコマンドを使用する
cargo build --release
ビルド構成オプション
- ビルド時は環境変数で構成を調整できる
EDIT_CFG_ICU*は ICU ライブラリ名 の設定に関係し、Linux のパッケージ管理者にはこのオプションの確認が推奨されるEDIT_CFG_LANGUAGESはビルドに含める言語の一覧をカンマ区切りで指定する- 利用可能な言語は i18n/edit.toml にある
パッケージ管理者向けの注意事項
- 標準の実行ファイル名は
edit、代替名はmsedit - 既存コマンドと
editの名前が衝突する可能性があるため、パッケージ名と実行ファイル名にはmseditを推奨する ms-editのような名前は避けるべき- 可能であれば
editエイリアスを割り当てる方法が推奨される
ICU 関連設定
- このプロジェクトは検索/置換機能のために ICU ライブラリ に任意で依存する
- デフォルトではプラットフォームごとの ICU ライブラリ名を探す
- Windows:
icuuc.dll,icuin.dll - macOS:
libicucore.dylib - Linux およびその他:
libicuuc.so,libicui18n.so
- Windows:
- インストール環境の SONAME が異なる場合は、ビルド時に環境変数を設定する必要がある
EDIT_CFG_ICUUC_SONAME: 例libicuuc.so.76EDIT_CFG_ICUI18N_SONAME: 例libicui18n.so.76
- ICU シンボルはデフォルトで
_接頭辞やバージョンサフィックスなしのu_errorNameのような形式で export されていると想定している - 異なるシンボル形式を使う環境では追加の環境変数を利用できる
EDIT_CFG_ICU_CPP_EXPORTS=true:_u_errorNameのような C++ シンボルを探し、macOS ではデフォルトで有効EDIT_CFG_ICU_RENAMING_VERSION=76:u_errorName_76のようなシンボルを探す
EDIT_CFG_ICU_RENAMING_AUTO_DETECT=trueを設定すると、実行ファイルはランタイムに renaming version の値を検出しようと試みる- この方法は ICU が公式にはサポートしていないため、依存しないことが推奨される
- UNIX では macOS を除き、ほかの選択肢がない場合にデフォルトで有効になる
- ビルド設定のテストは
cargo testに--ignoredフラグを付けて実行するcargo test -- --ignored
1件のコメント
Hacker News の意見
この記事は1週間に3回も上がるほど関心が大きかった
このエディタの対象ユーザー層には以前は micro を勧めていたが、そろそろ変えるべきか気になる
1: https://micro-editor.github.io/
editは、少なくともすぐ試した時点では構文ハイライトも標準対応していなかった"winget install zyedidia.micro"だけでインストール可能。同時代の8ビット・16ビットエディタを思い出すMicrosoft 規模の組織で、こういうプロジェクトがどう承認されるのか本当に気になる。何人かの開発者のサイドプロジェクトなのか、それとも製品ロードマップの一部なのか知りたい リーダー層にここへ時間を使おうとどう説得したのだろうか?
DOS 6.22 と、その後の 7.0、つまり Win95 頃の元の edit.com は自分にとって最初の IDE だった。qbasic から始めて、似た、あるいは同じインターフェースに慣れており、djgpp で C/C++ を学ぶときもずっと edit.com を使っていた 自分の「プロジェクトファイル」は
edit file1.cpp file2.cpp file3.cppが入ったe.batで、Alt-1,2,3 で簡単に切り替えられるなかなか良い複数ファイル対応があったので使っていた。今でもエディタのキーバインドを Alt/Cmd-1,2,3 でファイル切り替えできるように再マップし、「アクティブセット」を先頭の数個のファイルに小さく保とうとしている 構文ハイライトもなく、インデントの挙動もあまり良くなかったので、優れたコードエディタではなかった。そのためキャリア初期には、手で打ちやすく、タブっぽくないスペース2つのインデントを使っていた。それでもコードに直接触れている感覚は強かった 他の人たちがqeditのようなエディタをよく使っているのは知っていたが、不思議としっくり来ず、Unix 風のエディタも DOS ではぎこちなかった 少し試したところ、複数バッファをサポートしているようではあるが、同じキーバインドでバッファ切り替えはできないようだcopy conの時代の後に出てきた edit は本当に救世主だった気に入った点が多い。まず依存関係の一覧が空だなんて、それだけでもう納得した とてもよく動く。ファイルブラウザとダイアログまで備えた TUI を、このために丸ごと作ったというのが信じられない。自分のプロジェクトでも使いたいが、どれくらい簡単なのか気になる。プロジェクト関係者がここにいるなら、なぜ Ratatui を使わなかったのかも気になる コード品質も最高レベルで、ひと言だけ言える: Bravo!
1か月ほど前、MicrosoftがWindowsユーザーにより親しみやすく感じてもらうために独自のLinuxディストリビューションを持っている、という話を聞いた。記憶では、かなりシンプルなGNOME構成で、特別なものではなかった
Microsoftがbashの代わりにPowerShellを入れ、vimやnanoのような選択肢と一緒にEditを入れ、開発者向けインストールには.NETとVisual Studio Codeを含める、Microsoft専用Linuxディストリビューションを作る機会を使わなかったのは意外だ
これをデフォルトのWSLインストールにすることもできたはずだ。UbuntuやDebianのような典型的なディストリビューションとの争いに勝つことはなかっただろうが、Windowsユーザーは多いので一定のシェアを得て、よくある選択肢になれたかもしれない
MicrosoftはLinuxカーネルを支配することはできないが、ユーザー空間は掌握できる。自社アプリケーションが人気ディストリビューションに標準インストールされる流れを作っていたらどうなっていたか、想像してみる価値はある
Microsoft EditもPowerShellなどと同じくLinuxで使える。10年ほど前にカードをうまく切っていれば、多くのWindowsユーザーがWSLで使うおかげで、彼らのディストリビューションは今ごろ上位5位以内に入っていたかもしれない
巨大企業は個人の空間に自分たちの痕跡を押し込める。あとはMicrosoft EditでCo-Pilotがデフォルトでオンになるだけだ
Linuxカーネルの上に一種の「スーパー」WINEを載せ、特定のプログラムには仮想マシン内で密接に統合された従来のWindowsをフォールバックとして提供する、といった形かもしれない
ただし問題は、NTカーネルには設計面でLinuxカーネルより優れている部分が多いことだ。たとえばNTカーネルはGPUドライバが完全に死んでも復旧できるが、Linuxはそうした状況にはかなり苦労しそうだ。他のドライバも同様だ
しかしWindowsはMicrosoftにとって、だんだん資産というより負債になりつつあり、特にサーバー領域ではそうだ。主要な収益源はAzureとOffice 365で、いまだに2桁成長を続けている一方、Windowsライセンスの成長は停滞している
少なくともLinuxベースのWindows ServerやLinuxベースのWindows Workstationのようなバージョンは出てくると思う
ITサポートやテクニカルサポートの担当者は、たいていLinuxをよく知らず、サポートしたがらない。WSLはこの問題を解決する
ほとんどの開発者はLinuxそのものを使いたいわけではない。多くの開発者はターミナルの使い方もまともに知らず、GUIツールに依存している
WSLがUbuntuをサポートすれば、その知名度を活用できる
Azure Linuxは、コンテナ、VM、サーバーなどで使うためのMicrosoftサポートのOSだ
これは単に「やってみたかったから」作ったプロジェクトに見える。自分も何が起きているのか理解するためにそういうことをたくさんやってきたので、気持ちは分かる
だがTurbo VisionをFPCで書き直して複数ターゲット向けにコンパイルする取り組みは、20年前からあった。Turbo Visionはおそらく、存在する中で最高のテキストモード・ウィンドウイングライブラリだ
面白い部分は、テキスト画面全体をこういう配列にマッピングできるところから始まる:
varScreen: Array[1..80,1..25] Of Byte Absolute $B800; // or something like that as i recallTurbo Visionがもたらしたのは、移動可能なモーダル/非モーダルウィンドウだった。基本的にはその配列をループ内でずっと書き直す構造で、かなりきびきび動いた。そのライブラリで大いに稼いだ
https://github.com/magiblot/tvision
https://news.ycombinator.com/item?id=44034961
array[1..25, 1..80] of Word absolute $B800:0000だTPの配列は行優先順で配置され、各文字は2バイトで表現された。1つは文字そのもの、もう1つは属性(前景/背景色と点滅)だった
なので、より良く書くなら
array[1..25, 1..80] of packed record ch: char; attr: byte end absolute $B800:0000となるHerculesのようなモノクロのテキストディスプレイ(モード7)では、
$B800を$B000に変えればよい今はUnicode対応のEDLINを待っている
バッチファイルで標準入力からキー入力をパイプして、何らかの編集作業をスクリプト化できたのを覚えている。sedやawkの一部機能の代わりのような感じだった
試したことはないが、viでも可能そうだ。それが非常に呪われたやり方かどうかは別として
-sと一緒に使えばよい面白い。正直、誰に使わせるために作ったものなのかはよく分からないけど、面白そうではある
editコマンドは 2006 年以降 Windows でサポートされていないので、それ以来コマンドラインで使える Microsoft 提供のエディタはなかったこのエディタがどれほど高速なのかは印象的。https://github.com/microsoft/edit/pull/408
今は Helix を使っているが、良い TUI は好き
1993 年には edit でバイナリファイルを開いて、ハート形が見えるのを楽しんでいた