🆗

Windows版Zedを試してみたらVSCodeより使うことになりそう

に公開

Zedといふものをしてみむとおもひて⋯

記事の主旨と何の関係もない話

表題の文句「してみむとおもひて」は、土佐日記(紀貫之)の冒頭としてよく知られる「⋯してみんとてするなり」とはやや異なりますが、こちらを見るとそのように書いてありました。とは言え、「としのしはすのしはすの廿日」などとあってなんだか怪しいので、誤って伝わった文章か、書いた方が誤ったかのどちらかのように思えます。普通に土佐日記を読むならこちらの方が紙面の状態も良く、ふりがなも丁寧でよさそうです。

https://zed.dev/

Zedはコードエディターの一つであり、Rust製というところからも、その性能に期待を寄せる声をたびたび目にしたものでした。しかし永らくWindows非対応だったこともあり、「VSCodeで充分だろう」と、個人的にはそこまで興味を持っておりませんでした。

ところが(記事投稿時点から)約一か月前、Windows版が公開されたようです。風の噂でなんとなく知ってはいましたが、最近になって漸く使ってみました。

インストール

ダウンロードページ
https://zed.dev/download

ダウンロードページからZedのインストーラーを入手します。

インストーラー

インストーラーを実行して、手順に従ってインストールします。

各手順スクリーンショット

言語選択

私の試した場合は英語と簡体中国語しかありませんでしたので、英語にしています。

同意

インストールするためには同意します。

保存場所

保存先フォルダーを指定します。基本的に変える必要はないでしょう。

インストール時の設定

インストールする際にしかできない設定項目です。特に、「Open with Zed」は有効にすることをお薦めします。

Open with Zed

設定は以上でした。インストールが終ると次の表示になります。

インストール完了

起動すると、簡単な初期設定を行う画面が現れます。

起動画面

私の場合はVSCodeを主に使っていたため、とにかく「VSCode」とある項目をチェックしました。

VSCodeの設定をインポート
VSCodeの設定をインポート

設定が済んだら、Finish Setupをクリックします。

Welcome
Welcome to Zed

設定後、上のような画面になりました。

第一印象

初めて見るものは往々にして使い方が分からないものです。恥ずかしい話、使い方が分からな過ぎて一度挫折しました。

VSCodeのようなアイコンが無い

Cursorもそうでしたが、VSCodeにあるようなアイコンがありません。

VSCodeは左にアイコン
VSCodeは画面左にアイコンがある

Cursorはアイコンなし
Cursorにはアイコンが見当たらない

一応Zedの方は、よく見ると隅の方にアイコンがあります。

左下
左下

右下
右下

分かりやすいアイコンを排除したことで、視覚的な分かりやすさが損なわれた代わりに、全体的に洗練された印象を受けます。私個人としては、コマンドパレットよりもマウスクリックの方が楽で好みですが、余計なパネルが邪魔にならないというのはテキストエディターとして優れていると感じました。

どちらかと言えば、マウスに頼りすぎず、ショートカットやコマンドを駆使してメニューを表示するといった使い方をするべきもののように思います。この点で、合わない人が居ればとことん相容れないかもしれません。私も特にキーボード操作で完結したいという思想はありませんので、あまり使いこなせる自信はありません。

使い始めは迷う

先の画面が出ていればよいのですが、うっかり消してしまうと次回からこのような画面となります。

新規画面

この画面になってから、暫くどこに何があるのか分からず、何をすればよいのか迷ってしまいました。(放り出された感を覚えたのはプチコン以来です)

拡張機能は使えるか

どこに何があるか分からない上に、Cursorの時と異なりVSCodeとは完全な別物ですから、そもそも拡張機能というものはあるのかというところから不安を抱き始めました。実際にはしっかりありますが、やはりVSCodeのものとは異なるようです。

リモート接続はできるのか

VSCodeCursorの場合は、拡張機能をインストールすることで初めて、リモート接続ができるようになります。その先入観があったため、拡張機能が見当たらない時点でリモート接続も諦めていました。実際には、Zedは拡張機能不要ですぐにリモート接続できるようになっています。

簡単な使い方

本記事では、三つ取り挙げて簡単に紹介します。

プロジェクトパネル

プロジェクトパネルアイコン

左下の一番隅にあるアイコンをクリックすると、左にパネルが現れます。

プロジェクトパネル

Open Projectでフォルダーを選択できます。

フォルダーを開いた例

このようになってしまえば、もう見慣れた光景です。

拡張機能を確認する

拡張機能の画面はメニューから開くことができます。

ハンバーガーメニュー

左上のアイコンをクリックすると、隠れたメニューが表示されます。

メニュー可視化

この内、ZedExtensionsが拡張機能を指します。

拡張機能

この画面で拡張機能の確認、インストールができます。

リモート接続する

先述の通り、リモート接続のために必要な拡張機能はありません。しかし幾つかリモート接続メニューに到達する方法がありますが、これは調べなければ分かりませんでした。

  1. Fileメニュー

https://zenn.dev/coxlessspcond/articles/a0491fd70a7b20

これが一番明確な方法でしょうか。メニューからFileOpen Remote...を選択するだけです。

Fileメニュー

  1. コマンドパレット

メニューからGoCommand Paletteを選択することで、コマンドパレットを開きます。(もはやショートカットCtrl + Shift + Pで開く方が楽)

コマンドパレット開き方

コマンドパレット

ここでremoteなどと入力すると、projects: open remoteが候補に挙がります。

remote

  1. ショートカット

先ほどからメニューにも書いてある通り、Ctrl + Shift + Alt + Oで直ぐにリモート接続のメニューに到達できます。

既知のリモートホスト

VSCodeなどで設定した内容があれば、これを引き継いで、既に接続したことのあるホストがZedでも表示されます。

WindowsではC:\Users\ユーザー名\.ssh\configというファイルを編集することで、ホストの追加と削除が行えます。というのがVSCodeではできたのですが、Zedでは自分でこのファイルを開く以外に、sshコマンドから逃げる方法が分かりませんでした。sshコマンドを入力してホストを追加するのが正攻法になっているのでしょうか。

実際に使ってみた

VSCodeであれば冷却ファンが忙殺されそうな状況を再現して、Zedなら平気なのか、実験がてら使ってみました。

状況

  • VirtualBoxマネージャー起動
  • ゲストOS(Zorin OS)起動
  • エクスプローラー起動
  • ブラウザー起動
  • フォト起動
  • ZedWindows側のファイル表示
  • もう一つのZedでゲストOSにリモート接続

タスクバー

作業の様子

Zedの記事なので、Rustで適当なプログラムを作ってみました。

ソースコード類

画像はあれなので共有していません。

pixi.toml
[workspace]
channels = ["conda-forge"]
name = "just"
platforms = ["linux-64"]
version = "0.1.0"

[tasks]
build = "cargo build --release"

[dependencies]
rust = ">=1.91.1,<1.92"
gcc = ">=15.2.0,<15.3"
binutils = ">=2.45,<3"

Cargo.toml
[package]
name = "just"
version = "0.1.0"
edition = "2024"

[dependencies]
eframe = "0.33.0"
egui_extras = { version = "0.33.0", features = ["all_loaders"] }

main.rs
use eframe::egui;

fn main() -> eframe::Result {
    let options: eframe::NativeOptions = eframe::NativeOptions {
        viewport: egui::ViewportBuilder::default().with_inner_size( [928.0, 1120.0] ),
        ..Default::default()
    };
    eframe::run_native(
        "Just Zed.",
        options,
        Box::new(
            |cc: &eframe::CreationContext<'_>| {
                egui_extras::install_image_loaders(&cc.egui_ctx);
                Ok(Box::<MyApp>::default())
            }
        ),
    )
}

#[derive(Default)]
struct MyApp {}

impl eframe::App for MyApp {
    fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
        egui::CentralPanel::default().show(
            ctx,
            |ui: &mut egui::Ui| {
                egui::ScrollArea::both().show(
                    ui,
                    |ui: &mut egui::Ui| {
                        ui.image(egui::include_image!("JustZed.png"));
                    }
                );
            }
        );
    }
}

GUIアプリケーションなので、ゲストOS側で実行しました。

Just Zed.

感想

一つ確かなことは、コンパイル中でもファンの呻るような声は殆ど聞こえませんでしたし、ファンから放出される熱気も特に感じませんでした(ノートPCなので熱はすぐ手に届く)。多少処理が滞る様子はありましたが、ブラウザーの閲覧も普通にできました。

ところで、リモート接続に掛かる時間は特に短く感じませんでした。VSCodeの方が速いとまでは言えませんが、どちらもある程度時間が掛かっているように思います。但し、リモートホスト側のターミナルを開くのは明らかにZedの方が遅かったです。仕組みの違いから来るものなのでしょう。

使用後の印象

使用してみて、幾つか感じた一長一短がありました。

性能弱めのPCなら

私の使っているノートPCは、主記憶が8GBしかありません。購入した当時はPCに一切興味が無かったため、今更悔いても仕方がありません。とは言え、性能が低めであることに変わりなく、VSCodeを使っていると負荷が掛かっている様子を目にすることも多いのが現状です。

ただでさえブラウザーで調べ物をしながらブラウザー同然のVSCodeを動かしているところ、更に拡張機能が動作するとなれば、処理が追い付かず操作が効かなくなることもしばしばでした。況して、VirtualBoxDockerで起動した仮想環境にリモート接続するとなれば、なおさらです。

一方でZedを使っていると、VSCodeは遅かったのだなと感じる場面が頻繁にありました。どうやらZedの売りには「軽量」という特徴もあるようです。性能の高くない環境では、寧ろVSCodeに暴走されては操作不能に陥りかねないため、Zedは代替候補として充分あり得るのではないでしょうか。

拡張不要の機能

リモート接続の他にも、Pythonの言語サポートやrust-analyzerなど、標準で使える機能がまだまだあるようです。拡張機能に頼らないので、拡張機能を選択するという手間が軽減されます。

Pythonの拡張機能検索
Pythonのサポートについて、built-inだとある

日本語化できない?

表示言語を日本語にする方法が分かりませんでした。まだ日本語にはできないのでしょうか。

まだできないこともある

画像の表示に関して、VSCodeでの使用感には劣るところがあるようです。特にリモート接続時は、画像を表示することができませんでした。いずれ改善されることでしょう。

画像表示できない

また、リモートホスト上で別のフォルダーを開くのに、ややスムーズさを欠くように思いました。

結論:使い分け

単にできることの多さは、慣れも相まってVSCodeに及びません。しかしZedの方が軽快に動作するため、使用していてストレスを感じませんでした。日常的にZedで充分な場面や、負荷を掛けたくない場面では、積極的にVSCodeを避けてもよいかもしれません。

Discussion