🎧

Neovim で音楽を再生するプラグインを作った

2024/11/08に公開

TL;DR

https://github.com/michirakara/nvimusic

はじめに

みなさん、termusiccmus を使っていますか?
私は使っています。
ところでこれらのアプリを使っているのは大体コーディング中だということに気づいたので neovim 内で動く音楽再生プラグインを lua で作りました。
neovim のプラグインを作るのは初めてなのでバグや改善点などがあれば issue や PR などで教えていただけるとありがたいです。

環境

  • mpv と find と file コマンドが使える環境

できること

  • プレイリストに曲を追加する(:NvimusicAdd)(ディレクトリ、ファイル両方可)

  • プレイリストから曲を削除する(:NvimusicDelete)

  • シャッフルする (:NvimusicShuffle)

  • スタート、ストップ、スキップなど (:NvimusicPlay:NvimusicStop:NvimusicToggle:NvimusicSkip)

  • TUI のポップアップを開く (:Nvimusic)

    ここでできること

    • r(oll) でシャッフル
    • s(kip) でスキップ
    • Space でスタート/ストップ
    • d でカーソル上の曲をプレイリストから削除
    • Enter でカーソル上の曲を再生
  • lualine などのステータスバーに表示

感想など

  • ランダム再生モードを実装する代わりに現在のプレイリストをシャッフルすることで実装量を減らしました。ランダム再生モードを作ろうとするとただランダムに再生するだけでなく直近で選ばれた曲は選ばないなどの処理をする必要があるので大変がちです。
  • lua 、シェルスクリプトと Python の中間のような書き心地で面白いです。絶妙に不安になる(慣れていないのも大きいと思いますが)
  • 自分で自分用のプラグインを作っていると自分が満足したら機能追加のモチベーションがなくなることに気付きました。config できるようにしたくはあるのですが…
  • こういうプラグイン、ありそうなのにほぼ存在しなくて驚きました
  • find、file コマンドをできるだけ使いたくないのですが(Unix系以外で使えないので)lua で実装する方法ってありませんか? がんばるしかない…?
  • vim の lua ライブラリの API が優秀でめちゃくちゃ楽に書けました。(300行しかないしうち120行はキーバインドや user command などの設定
  • 使ってみてください!!!!!!使ってみてください!!!!!!使ってみてください!!!!!!がんばったので!!!!!!

おわりに

もっとたくさんプラグインを作りたいです。それでは:wq↵

Discussion