🔰

初めてNeovimをプラグインを作った話

に公開

この記事は1分で読めます。

何を作ったの?

shell-abbr.nvimというプラグインです。fish/zshのシェルで使っているabbrが直接neovimの中で使えます。

https://github.com/reyalka/shell-abbr.nvim

よもやま話

プラグインに関するいろいろな話です。

作ろうと思ったきっかけ

Fishで普段から便利に使っているabbr機能をNeovimの中で使いたいと思ったのがきっかけです。

特に類似のプラグインが見つからなかったため、開発に乗り出しました。
このプラグインを使うと、シェルで使っているabbrをNeovimでもそのまま活用できるようになります。

(というのがきっかけの半分で、もう半分のきっかけは駅伝ネタ目的です)

開発の流れ

Lazy.nvimを用いてプラグインを開発していたため、少し設定を書き加えるだけでローカルのプラグインを使うことができました。

{
  dir = "path/to/local/plugin",
  -- 筆者の環境では以下
  dir = "~/dev/shell-abbr.nvim",

  opts = {}
},

この機能を使ってプラグインの動作を確認していました。

仕組み

setupが実行されると、特定のファイルタイプに対してautocmdが登録されます

このautocmdが実行されると、以下の処理が実行されます。

  1. シェルで定義されているabbrを取得
  2. パースして{ name, expansion }のリストに変換
  3. iabbrでNeovimの中でのabbrを登録

今後について

駅伝のために急いで作ったプラグインなので、まだまだ改善点がたくさんあります。

一例を挙げると、

  • abbrを無効化できる機能
  • 行頭のみ(コマンドが来る位置のみ)abbrを適用させる
  • 対応するシェルを増やす
  • 正規表現を用いたabbrに対応

などです。頃合いを見て実装したいと考えています。

まとめ

初めて作ったプラグインでしたが、思った通りに動いてくれてNeovimのプラグインの作りやすさを実感しました。やはり、コード数行で最小のプラグインを作れるのには(前々から知ってはいたものの)驚きました。

まだまだプラグインとしては未完成な部分はありますが、ぜひ使ってみてください。

https://github.com/reyalka/shell-abbr.nvim

Discussion