--- title: textlintで日本語校正する方法(Zed) description: 日本語の文章をリアルタイムで校正するtextlintを、Zedエディタで使う方法。自作LSPサーバーの導入からルール設定、自動修正、無効化までを解説します。 --- ## textlintとは [textlint](https://textlint.github.io/) は、JavaScriptで書かれた自然言語向けの文章校正ツールです。ESLintのように、校正ルールをプラグインで自由に追加・設定できます。日本語に限らず、あらゆる言語のテキストを校正できます。 - 誤字脱字や表記ゆれを自動検出 - 「例えば」→「たとえば」のような表記統一 - ら抜き言葉・い抜き言葉のチェック - 一文の長さや句読点の数をチェック VSCode用の拡張機能はありましたが、[Zed](https://zed.dev/) にはなかったため、LSPサーバーを自作しました。 ## 2つのプログラム | 名前 | 役割 | 状態 | |---|---|---| | `textlint-lsp` | LSPサーバー本体。Node.jsで動作 | [npmで公開済み](https://www.npmjs.com/package/textlint-lsp) | | `zed-textlint` | Zed拡張機能。`textlint-lsp` を起動 | [PR提出済み](https://github.com/zed-industries/extensions/pull/6693) | ## できること - 文字入力のたびに自動校正(同じ文章を再チェックしないので2回目以降は一瞬) - 波線で問題箇所を表示 - `Ctrl+.` で修正候補を表示・適用 - ルール単位の無効化(行単位/全ルール) - `prh.yml` による独自の表記ルール定義 ## 導入方法 ### 1. textlint-lsp をインストール ```bash npm install -g textlint-lsp ``` ### 2. プロジェクトにtextlintをセットアップ ```bash npm install --save-dev textlint @textlint/markdown npm install --save-dev @textlint-ja/no-synonyms prh ``` `.textlintrc.json` を作成: ```json { "plugins": { "@textlint/markdown": true }, "rules": { "@textlint-ja/no-synonyms": true, "prh": { "rulePaths": ["prh.yml"] } } } ``` ### 3. Zed拡張機能をインストール #### 方法A:Zed拡張機能一覧から(PRマージ後) Zedの拡張機能一覧に「textlint」が表示されたら、ワンクリックでインストールできます。 #### 方法B:Dev Extension として手動インストール 1. [zed-textlint.zip](/zed-textlint.zip) をダウンロードして展開 2. Zedで `Ctrl+Shift+P` → `zed: install dev extension` を実行 3. 展開した `zed-textlint` フォルダを指定 導入後、`.md` または `.mdx` ファイルを開くと自動的にlintが走ります。 ## コードアクション(自動修正) 波線の上で `Ctrl+.` を押すと、次の操作が選べます。 | アクション | 内容 | |---|---| | 修正を適用 | textlintの自動修正候補を適用 | | 無効化:(ルール名) | その行だけ指定ルールを無効化 | | 無効化: すべてのルール | その行以降の全ルールを無効化 | ## 無効化コメント `.md` ファイルではHTMLコメント形式で記述します。 - `<!-- textlint-disable prh -->` で無効化 - `<!-- textlint-enable prh -->` で再有効化 `.mdx` ファイル(Starlight / Astro)では、MDXの構文制約のため、`{/* */}` で囲みます。 - `{/* <!-- textlint-disable prh --> */}` で無効化 - `{/* <!-- textlint-enable prh --> */}` で再有効化 :::note ##### 📝 MDXでの注意点 Zedのコードアクションから自動挿入されるので、普段は手動で書く必要はありません。 ::: ## 公開について ### `textlint-lsp`(LSPサーバー) [npmで公開済み](https://www.npmjs.com/package/textlint-lsp)です。`npm install -g textlint-lsp` で誰でもインストールできます。 ### `zed-textlint`(Zed拡張機能) [Zed拡張機能リポジトリにPR提出済み](https://github.com/zed-industries/extensions/pull/6693)です。マージまでは [zed-textlint.zip](/zed-textlint.zip) をDev Extensionとしてインストールしてください。 ## トラブルシューティング ### MDXファイルで `{ }` がエラーになる Mermaid図の `{{ }}` がMDXパーサにJSX式と誤認されることがあります。`{{` を `(` に置き換えてください。 ### lintが遅い 初回のlintには数秒かかります。2回目以降は前回と同じ文章なら再チェックしないため、すぐに結果が表示されます。