6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Vim + npm install --save-dev textlint

Last updated at Posted at 2023-04-02

はじめに

これはVim駅伝4/5の記事です

皆さんはVimで文章を書きますか?
僕は書きます。

Vimとtextlintを連携させ、快適なVimライフを送っている人も多いのではないでしょうか?
そんな方は、

npm install -g textlint

のように、グローバルインストールしたtextlintを使うことが多いと思います。
しかし、これにはデメリットがあります

  • textlintの拡張もグローバルインストール必要がある
  • 用途に応じてtextlintのルールを分ける方法がめんどくさい

また、僕はファイルを作らず、なぐり書きをした状態のテキストをtextlintに入力として渡したいと思ったことが多いです。

そこで今回は、

  • ファイルを作らずに文字を書く
  • バッファに書き込んだ文字を指定したルールのtextlintに入力として渡す
  • Vimでtextlintの出力を見る

を目的とし、この目的を達成するための環境づくりを紹介したいと思います。

いるもの

1. ルールごとにtextlintプロジェクトを作成する

今回は例として、日本語用のtextlintプロジェクトを作成します

  • 日本語ディレクトリ

まずはホームディレクトリにtextlintプロジェクト用のディレクトリを作成します。

mkdir -p textlint-ja
cd textlint-ja

textlintプロジェクトを作成します

npm install --save-dev textlint
npm install textlint-rule-preset-ja-technical-writing
npx textlint --init

see also:

https://textlint.github.io/docs/getting-started.html

これでtextlintの準備は完了です。

2. Vimの準備

今回の要件は

  • ファイルを作らずに文字を書く
  • バッファに書き込んだ文字を指定したルールのtextlintに入力として渡す
  • Vimでtextlintの出力を見る

です。

これらの要件を満たすために以下のDraft関数を作成しました。

function! s:Draft()
  enew | setlocal buftype=nofile bufhidden=hide noswapfile
  " 指定するパスは、textlintプロジェクトのパス
  set ft=markdown | lcd $HOME/textlint-ja
  let g:quickrun_config['markdown'] = {}
  let g:quickrun_config['markdown']['exec'] = 'cat %s | npx textlint --stdin-filename draft.md --stdin'
endfunction
command -nargs=0 Draft call s:Draft()

やってることとしては

  1. 新しく下書き用のバッファを作成する
  2. 手順1. で作成されたバッファのファイルタイプをmarkdownに設定する
  3. lcdコマンドを使って、下書き用のバッファのカレントディレクトリをtextlintプロジェクトに移動させる。
  4. vim-quickrunを設定する

です。

これでセットアップは完了です。

デモ

  1. :Draftを実行
  2. 作成された下書きバッファに文字を書く
  3. vim-quickrunを実行

これだけで、目的を達成できました

ここにデモを貼っておきます。
このように、ファイルを作らず、バッファに書き込んだ文字をそのままtextlintに渡せていますね!!!

textlint.gif

改造例

上記の方法で目的を達成できましたが、改善点があります。
いくらか挙げておきます。

  • textlintプロジェクトのパスをDraftコマンドで指定できるようにする
  • Draftコマンドの定義をftpluginに書く
  • visualモードで選択した範囲の文字をtextlintに入力として渡す

もし、この方法が気に入った方は、上記の改善例を試すとより豊かになると思います。

まとめ

この方法であれば、よりtextlintを便利にVim上で使えると思うので是非試してみてください!!!

追記

時間に余裕があれば、改造例で挙げた構成も追記するかもしれません

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?