コンテンツにスキップ

textlintで文章校正する方法

textlint は、JavaScriptで書かれた文章校正ツールです。校正ルールをプラグインで自由に追加・設定できます。日本語に限らず、あらゆる言語のテキストを校正できます。

  • 誤字脱字や表記ゆれを自動検出
  • 「例えば」→「たとえば」のような表記統一
  • ら抜き言葉・い抜き言葉のチェック
  • 一文の長さや句読点の数をチェック

Zed用がなかったのでつくりました

Section titled “Zed用がなかったのでつくりました”

VSCode用の拡張機能はありましたが、私が最近愛用しているZed にはなかったため、LSPサーバを自作しました(Powered by DeepSeek V4 Pro)。試していませんが、VS Code, Neovim, Emacsなどでも使えるものと思います。

名前役割状態
textlint-lspLSPサーバー本体。Node.jsで動作npmで公開済み
zed-textlintZed拡張機能。textlint-lsp を起動PR提出済み
  • 文字入力のたびに自動校正(同じ文章を再チェックしないので2回目以降は一瞬)
  • 波線で問題箇所を表示
  • Ctrl+.(または⚡アイコンをクリック)で修正候補を表示・適用
  • ルール単位の無効化(行単位/全ルール)
  • prh.yml による独自の表記ルール定義
textlintの動作例
Terminal window
npm install -g textlint-lsp

2. プロジェクトにtextlintをセットアップ

Section titled “2. プロジェクトにtextlintをセットアップ”
Terminal window
npm install --save-dev textlint @textlint/markdown
npm install --save-dev @textlint-ja/no-synonyms prh

.textlintrc.json を作成:

{
"plugins": { "@textlint/markdown": true },
"rules": {
"@textlint-ja/no-synonyms": true,
"prh": { "rulePaths": ["prh.yml"] }
}
}

方法A:Zed拡張機能一覧から(現在PRマージ中ですので、それが終わってから)

Section titled “方法A:Zed拡張機能一覧から(現在PRマージ中ですので、それが終わってから)”

Zedの拡張機能一覧に「textlint」が表示されたら、ワンクリックでインストールできます。

方法B:Dev Extension として手動インストール

Section titled “方法B:Dev Extension として手動インストール”
  1. zed-textlint.zip をダウンロードして展開
  2. Zedで Ctrl+Shift+Pzed: install dev extension を実行
  3. 展開した zed-textlint フォルダを指定

導入後、.md または .mdx ファイルを開くと自動的にlintが走ります。

コードアクション(自動修正)

Section titled “コードアクション(自動修正)”

波線の上で Ctrl+. を押す(または⚡アイコンをクリックする)と、次の操作が選べます。

アクション内容
修正を適用textlintの自動修正候補を適用
無効化:(ルール名)その行だけ指定ルールを無効化
無効化: すべてのルールその行以降の全ルールを無効化

.md ファイルではHTMLコメント形式で記述します。

  • <!-- textlint-disable prh --> で無効化
  • <!-- textlint-enable prh --> で再有効化

.mdx ファイル(Starlight / Astro)では、MDXの構文制約のため、{/* */} で囲みます。

  • {/* <!-- textlint-disable prh --> */} で無効化
  • {/* <!-- textlint-enable prh --> */} で再有効化

npmで公開済みです。npm install -g textlint-lsp で誰でもインストールできます。

Zed拡張機能リポジトリにPR提出済みです。マージまでは zed-textlint.zip をDev Extensionとしてインストールしてください。

MDXファイルで { } がエラーになる

Section titled “MDXファイルで { } がエラーになる”

Mermaid図の {{ }} がMDXパーサにJSX式と誤認されることがあります。{{( に置き換えてください。

初回のlintには数秒かかります。2回目以降は前回と同じ文章なら再チェックしないため、すぐに結果が表示されます。