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