ZLS とは
ZLS(Zig Language Server)は、zigtools コミュニティが Zig で書いた Zig 向けの Language Server Protocol 実装です。補完、定義ジャンプ、ホバー情報、意味解析といった現代的な IDE 機能を、お気に入りのエディタで使えるようにします。GitHub スターは 4,000 を超え、生産的な Zig 開発に欠かせないツールです。
⚡ ZLS の主な機能
💡 賢い補完
関数、変数、型、import の賢い補完。今のスコープと利用できるシンボルを踏まえた候補を出します。
🔍 ナビゲーション機能
定義・宣言へのジャンプ、参照の検索、ドキュメントシンボル。大きな Zig コードベースも正確に辿れます。
📝 コードインテリジェンス
ホバー情報、セマンティックトークンによるハイライト、インレイヒント。手で調べなくてもコードの構造と型が分かります。
🛠️ 開発ツール
zig fmt による自動整形に加え、コードアクション、選択範囲の拡大、折りたたみ範囲でコードを整理しやすくします。
🔄 シンボル操作
コードベース全体にわたるシンボルのリネーム、全参照の検索、プロジェクトを見渡すためのシンボルのアウトライン表示。
📦 パッケージ対応
独自のパッケージ解決、cImport への対応、名前空間の扱いにより、複雑な Zig プロジェクトと依存関係にも対応します。
🎯 対応しているエディタと IDE
- VS Code: ZLS と連携する公式 Zig 拡張
- Neovim / Vim: 標準の LSP 対応と専用プラグイン
- Emacs: lsp-mode と eglot に対応
- Sublime Text: LSP パッケージで連携
- Kate / KDevelop: LSP を標準でサポート
- LSP 対応エディタなら何でも: Language Server Protocol に広く対応
apt upgrade を実行するだけで、常に最新版を使い続けられます。
📦 deb.griffo.io からインストールする
ステップ 1: リポジトリを追加する
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 ずっと無料のミラーがあります。 deb-free.griffo.io は、アカウントもサブスクリプションもなしでパッケージをずっと無料で配布しています。上流より最大2か月遅れ、セキュリティ修正は即座に公開されます。現在収録しているのは cliamp、Ghostty、lazydocker、Oh My Posh と Zed です。ZLS は含まれていないため、今日入手する方法は上のリポジトリだけですが、ご要望があれば追加できます。
🧩 extrepo オプションについて。 extrepo は外部リポジトリを扱う Debian 標準のツールです。署名済みメタデータと照合して鍵を検証したうえで、sources ファイルの作成と署名鍵のインストールを代わりに行います。このリポジトリは griffo、ずっと無料のミラーは griffo-free という名前で登録されているので、Debian(bookworm、trixie、forky、sid)では上のコマンドだけで設定は完了です。
extrepo が用意するのは sources ファイルと鍵だけなので、サブスクリプションの認証情報は引き続き /etc/apt/auth.conf.d/deb.griffo.io.conf に書きます。extrepo は Debian のスイート向けメタデータしか公開していないため Ubuntu は対象外です。Ubuntu では sudo または root のコマンドを使ってください。
ステップ 2: ZLS をインストールする
# 最新の安定版 ZLS をインストール
sudo apt install zls
# あるいは、最先端の機能を試すなら nightly ビルドを
sudo apt install zls-master
# インストールを確認
zls --version# 最新の安定版 ZLS をインストール
apt install zls
# あるいは、最先端の機能を試すなら nightly ビルドを
apt install zls-master
# インストールを確認
zls --version🎯 エディタの設定例
VS Code の設定:
# マーケットプレイスから Zig 拡張をインストール
# PATH に ZLS があれば拡張が自動で検出します
# あるいは settings.json で ZLS のパスを指定:
{
"zig.zls.path": "/usr/bin/zls"
}Neovim の設定(nvim-lspconfig を使う場合):
-- init.lua の中で
require('lspconfig').zls.setup{
cmd = { "zls" },
filetypes = { "zig" },
root_dir = require('lspconfig.util').root_pattern("build.zig", ".git"),
}ZLS の基本的な設定:
# ZLS の設定ファイルを作る
mkdir -p ~/.config/zls
cat > ~/.config/zls/zls.json << 'EOF'
{
"enable_semantic_tokens": true,
"enable_inlay_hints": true,
"enable_snippets": true,
"warn_style": true,
"highlight_global_var_declarations": true
}
EOF🚀 deb.griffo.io を選ぶ理由
- 公式 Debian: ZLS は公式リポジトリにありません
- 手動コンパイル: Zig の master と、面倒なビルド手順が必要
- バイナリのダウンロード: 更新は手動で、パッケージ管理もなし
- deb.griffo.io: 最新版を自動更新でお届け
- ✅ 最新の言語対応: Zig の新しい言語機能に、すぐ対応
- ✅ 手動ビルド不要: ビルド済みバイナリ、Zig の master は要りません
- ✅ 自動更新: 上流のリリースから数時間以内にパッケージを更新
- ✅ 安定版と nightly: 安定版と最先端版のどちらも利用できます
- ✅ マルチディストリビューション: Bookworm、Trixie、Sid で動作
- ✅ 手間のかからない運用: 更新は通常の apt コマンドだけ
📦 パッケージのビルドリポジトリ
Debian パッケージは、これらの GitHub リポジトリで自動的にビルド・管理されています:
- 🇿 zls-debian (stable) - 安定版リリースのビルド
- 🇿 zls-master-debian (nightly) - nightly の開発ビルド
🔗 関連パッケージ
deb.griffo.io では、こちらも配布しています:
- Zig プログラミング言語 - ZLS の開発に必要です
- Ghostty ターミナル - 開発のためのモダンなターミナル
- fzf ファジーファインダー - ファイル移動を強化