📝

microsoft/editを使ってみた

に公開
4

microsoftのeditというcuiエディタがgithub上で公開されたので
それについて詳しく書く。

editとは

windowsにはデフォルトでインストールされているms公式の
エディタがnotepadしかない。

notepadはあくまでguiのツールだし、ターミナル上で
動作するvimみたいなエディタが存在しないため、
今回windowsに載せる目的でeditを作ったという事らしい。

sshからwindowsにログインした場合は公式が推奨する
エディタで編集するというのが不可能になるのだから確かに必要だ。

現在はmicrosoft/editのレポジトリに
windowsのx64とarm,linuxのx64とarmのバイナリがあるのでそれをダウンロードして使うとよい。

今後、windows11のどこかのバージョンでデフォルトでインストールされるみたいだ。

mac版はeditの作者にmac環境が無いから、リリースされていないみたいで、
希望があるなら作るらしい。プルリクは受け付けるとのこと。
実際、githubを見ると早速多数のプルリクがある。

使い方

ターミナルで動く

rustのソースコードとして

結構ええ感じというか。
こんなに綺麗なの初めて見た。
勉強にええんやろうね。
src/input.rsあたり簡単そうなので後で読んでみる。

ビルドしてみたい

ビルド方法をざっくり書きます。
恐らく一番ほしいのがwindowsなので
windows前提

準備

visual studioインストール

IDEがいらない場合は下のようにビルドツールのみ。
IDEも欲しい(他にvisual studioを使うとか)の場合は下のようにして

wingetからインストールする。

winget install Microsoft.VisualStudio.2022.BuildTools

# IDEの方も欲しい場合。
# winget install Microsoft.VisualStudio.2022.Community

C++のインストール

visual studioがインストールで来たら、
visual studioのinstallerを立ち上げてそこから
Desktop development with C++をインストールする。

rustのインストール

editのビルドにはgnuのrustでなく、msvcの方のrustが使われているので
そっちをインストール。

winget install Rustlang.Rust.MSVC

gitレポジトリ

下のようにクローンしてビルドしたいタグにデタッチする

gh repo clone microsoft/edit
cd edit
git switch -d v1.0.0

rust のnightlyを有効にする必要があるので、
RUSTC_BOOTSTRAP環境変数を1にする。
この状態でないとeditをビルドするときにエラーが出る。

Set-Item  Env:/RUSTC_BOOTSTRAP -Value 1

いつも通りcargo buildでビルドし、cargo install -path .
で~/.cargo/binにインストールする。

cargo build
cargo install -path .

感想

editという名前どうにかならんかったんすか?
vs_editとかmseditとか色々あると思うんだ。

Discussion

LaPhLaPh

名前はおそらく"edit.exe"から来ているのかなと思っています。(MS-DOS/95/98あたりにあったのをブラッシュアップした形でのリリース?)

Otogawa Katsutoshi(oto)Otogawa Katsutoshi(oto)

そうですね。
msdos時代にあったeditコマンドの代わりになる物みたいです。
問題は、Windowsだけで無く、linuxやmac(今後BSD系も?)でもインストール出来るので、editなんていうありふれた名前だったらWindows以外のosだと既存またはこれから作りたいコマンドの名前と衝突してしまうんじゃないのかなと。

例えばmseditやwineditみたいな名前にして
Windowsだけmseditのエイリアスをeditにするとかで他のosはmseditという名前を使えば良いし、Windowsは editという名前が良いならその名前で使うことができるからeditという名前で実行ファイルを作る必要は無いと思います。

渡来夢吉渡来夢吉

よくわからないまま、上手くいかなかったところを回避したらビルドまで出来ました。
ありがとうございます。
以下、素人のはまりポイントを書いておきます。
宜しければ、アドバイスが頂けると嬉しいです。

1.gitレポジトリが上手くいかなかった
 gh が見つからなかったので、ソースをZIPでダウンロード
 ⇒適当な場所にZIPファイルを展開
 ⇒edit-main に移動
2.cargo install -path .】が上手くいかなかった
 ⇒edit-main\target\debug\deps にEdit.exeが出来ていたのでクリックで実行

Otogawa Katsutoshi(oto)Otogawa Katsutoshi(oto)

1.について
git自体はインストールできている感じですかね?
ghはgithub のコマンドなので、
powerhsell or windows terminalから下のように実行して
github cliをインストールしてください。

# gitの方もインストールできてないならインストールする
# windowsはMs公式がGit公式のレポジトリをフォークしたものがあるので
# 特に理由がない限りそれを使う。
# winget install Microsoft.Git

winget install GitHub.Cli

GitHubのアカウントをあらかじめ作成しておく。
作ったことが無いならedge, chromeを立ち上げ、Github公式のページから
Sign upで作成しておく。
その場合、
アカウント名は大文字を使わずに小文字と文字を使うこと。名前を本名でやる場合、苗字と名前の間を詰めるか_を使う。
これはgithubで今後dokcer registryを作るときにdocker registryは大文字と小文字の区別が
無いため、不具合の原因になりうる。

GitHub公式のアカウントが作成できたら、powershell or windows terminalを立ち上げる。

# 下記のコマンドを使ってログイン。
gh auth login

以下対話形式で求められる。
a. github.comからgithub.enterpriseか?と出るのでGihub.comを選択
b. gitのプロトコルに何を使うか?と出るのでsshを選択
c. 公開鍵をGitHubアカウントのために作るか?というのでYes
d. パスフレーズが求められるがそのままEnterで良い。
e. タイトルもそのまま
f. 認証方法がAPIキーかブラウザでの認証か聞かれるのでブラウザ認証
g. ブラウザが立ち上がりgithubにアクセスするので、powershell or windows terminalに表示されている
認証用のトークンを貼り付ける。
h. 認証完了

github cliがgithub側に認証されたので、下のようにコマンドを実行して
githubからレポジトリをローカルにクローンする。

gh repo clone microsoft/edit

あとは書いてある通りで動きます。

2について

ビルド自体でできているみたいなので、パスが通っていないのだと思います。

特に設定をいじっていなかったら、rustの場合は
~/.cargo/bin/配下にビルドしたものがcargo install -path .で入りますが、
デフォルトだとUserのPATHがそこに通っていないので、
パスを通すことになると思います。

Windowsキー押下-> 検索欄にpathと入力 -> パスの編集が出るのでそれを選択 -> 出てきたウインドウの下の方に環境変数の設定が出るのでクリック -> 上の方にユーザー変数の項目が出るので、 PATHを選択して、編集をクリック -> 右にある新規ボタンをクリック→ C:Users\あなたのユーザー名\.cargo\bin ->PATHを追加してOK-> 反映させるためにwindows ログインし直し。-> windowsのターミナルを立ち上げる

# 下記のようにしてPathに~/.cargo/binへのPATHが通っていることを確認。
echo $Env:Path

# 下記のように実行するとedit.exeのフルパスが表示されるので正しくインストールされている事が確認できる。
where.exe edit