ZedでC#開発環境を構築してみた
ZedにC#言語サーバーを導入し、Unityプロジェクトで補完・定義ジャンプを使えるようにするまでの手順とハマりどころをまとめました
こんにちは!パン君です。
今回は最近乗り換えを進めている ZedエディタでUnityのC#を快適に書ける環境を作る ところまでをまとめます。
結論から言うと、
- Zed単体ではUnityのC#を解析できない
- 外部のC#言語サーバー(csharp-language-server)を設定して使う必要がある
- .NET ランタイムのバージョン不足でも簡単に詰む
- Unity プロジェクトはデカいので「開くフォルダ」を絞らないと重くなる
こういう特徴があります。
この記事では実際に自分の環境で Zed を動かす中で遭遇したエラーや、
そこから解決までにやったことをまとめました。
ZedでUnityのC#が動かない理由
ZedはVSCode・RiderのようにUnity用のC#サポートが標準で入っていません。
そのため
- C# の構文解析
- 補完
- 定義ジャンプ
- ワークスペースの読み取り
が出来ません。
しかし言語サーバーでOmnisharpというのがZedのExtensionからインストールできます!がしかし...
これ動きません(少なくともWindowsでは)
調べたところどうしようも無かったので、このOmnisharpに関しては更新を待ちましょう....
なので今回使用するLSPを csharp-language-server に変更して動作させていきます。
導入前に必要なもの
下記導入しておいてください。
これらの導入方法はまたどこかで記述します。(特に難しくないので、検索したら結構な数出てきます。)
- .Net runtime(9.0 upper)
- Node.js(確か20 upper)
- Omnisharp(ZedのExtensionからInstall)
csharp-language-serverをダウンロード
cargoがある方は下記
cargo install --git https://github.com/SofusA/csharp-language-server無い方は公式ページのReleasesからWindows用のバイナリを手に入れてください。
ページはこちら
環境変数からまた格納した場所にパスを通すのも忘れずに
今回は下記でいきます。
C:\\Users\\<User Name>\\AppData\\Local\\csharp-language-server\\csharp-language-server.exeZedの設定に言語サーバーを紐付ける
ZedのSettings.jsonを開いて(どのSetting.jsonかは環境に合わせてください。)
{
"languages": {
"CSharp": {
"language_servers": ["omnisharp"],
"roots": ["*.sln", "*.csproj", ".git"]
}
},
"lsp": {
"omnisharp": {
"binary": {
"path": "C:\\Users\\<User Name>\\AppData\\Local\\csharp-language-server\\csharp-language-server.exe"
}
}
}
}Zedを再起動して適当な.csファイルを開いてみましょう。
これだけで稼働自体はするはずです。
ZedのOmniSharp拡張が古いフォルダを掴んでエラーになる
Zedソフトが格納されているディレクトリ内の extensions/work の csharpフォルダを手動削除で解決するかも
稼働しなかった場合
- Zed上で「Ctrl + Shift + P」でコマンドパレットを開く
- zed: open logでログ取得
- AIに投げて質問 or エラーログを検索
とかで解決しましょう;;
正直記事が少ないのでAI投げるのが安定です。
(ZedがAI Agentとの親和性がエグイのでそれでもいいです。
Gemini3.0が昨日公開されたので、自分はそれを使用しています^^)
また LSPは稼働しているけど定義に飛べない などのケースもあります。
どうやらアセンブリを跨いだ補完は対象のファイルを開くまで効かないらしいです。
「Ctrl + E」で該当ファイルを開いてやりましょう。補完が効き始めます。
最終的な動作感
- 補完:軽快
- 定義ジャンプ:ソースがある範囲では問題なく動く
- 外部DLL:ジャンプは不可(仕様だが、自作DLLの場合可能)
- Unity100%のIDEほどではないが かなり快適(デバッグとかは無理そう...)
VSCodeより軽く、Riderよりシンプル。
個人的には「ライトにUnityを書きたいときのエディタ」としてすごく気に入りました!
コメントを読み込み中...