Neovimメモ 2023年1月26日
この記事を読んでも
- Neovimが画期的に使いやすくなる
- 新しいプラグインを導入できる
はないです。
明記しない限り、nightly (v0.9.0-dev
)は、
2023年1月26日のnightly(v0.9.0-dev-810+gb8288df99
)のことです。
コミュニティ
Neovim Conf 2022のアーカイブ
Neovim Conf開催したときの開発環境
- Neovim Confの開催日時
2022年12月9日と10日 - 最新リリース
v0.8.1 (2022年11月14日リリース)です。
Neovim v0.8.2(2022年12月30日リリース)
の少し前の状態です。 -
lazy.nvim
人気なプラグインマネージャーのlazy.nvimがまだ広まっていなかった印象があります。
Neovim Conf後の2022年12月20日のRedditの投稿で広まった印象があります。
issueを古い順にすると、1番古いのは12月22日です。
全体
- Day1
- Day2
プレゼン
-
Neovimコア
-
State of Neovim - justinmk(Justin M. Keyesk)
Neovimの現状を話しています。
2014年、初期からのメンテナーの方が発表者です。
今のNeovimの開発のリーダーという印象を私は持っています。 -
Neovim internals - past and future - bfredl
Neovim内部の過去と未来を話しています。
発表者はNeovimのコアチームの一員です。Neovimプロジェクトでフルタイムで働いています。
-
State of Neovim - justinmk(Justin M. Keyesk)
-
プラグイン
-
Neovim ecosystem state for plugin developers - Anton Kastritskiy
プラグイン開発者のためのNeovimのエコシステムの状態を話しています。今とエコシステムは違います。
これに対するRedditのスレッドで、発表者がコメント返信しています。 -
Language Tailored Plugins: An Experience Like No Other - Chris Kipp
特定の言語に特化したプラグインの紹介をしています。
発表者もScala用のプラグインnvim-metalsを開発しています。 -
Building a webassembly runtime for Neovim plugins - Gustavo Sampaio
Neovimとwebassemblyについて話しています。 -
vmux: neovim as term multiplexer - yazgoo
vim/neovimを端末のマルチプレクサにするvmuxの紹介をしています。 -
Regexplainer - Benny Powers
カーソル上の正規表現の説明を表示する
nvim-regexplainer
を作成した理由と経緯を話しています。
-
Neovim ecosystem state for plugin developers - Anton Kastritskiy
-
プラグイン開発
-
Writing Plugins - It's Never Been Easier - Dr. David A. Kunz
Luaを使ったNeovimのプラグイン書き方を教えてくれます。
発表者はNeovimの新機能やプラグインの紹介動画を投稿しています。
Redditで、紹介動画のスレッドが上がっているのをよく見ます。 -
Lua, a Primer - John McBride
Luaに関する次の説明をしています。- Luaを使い始める方法
- Luaを使用してのNeovimの設定方法
- Luaで利用できる強力なAPIやインターフェース
プラグインやシンプルなスクリプトを作成するに便利です。
-
Writing Plugins - It's Never Been Easier - Dr. David A. Kunz
-
キーマップ
-
Mapping your way to productivity - Ben Frain
生産性を高めるマッピングについて話しています。
使用しているスライド
-
Mapping your way to productivity - Ben Frain
-
他のテキストエディタ
-
Why I Use Neovim From Within VS Code - Joe Previte
発表者がVS Code内からNeovimを使用する理由を説明しています。
使用しているスライド -
Helix: an editor hopping story - Maas Lalani
Helixに乗り換えるまでの道のりを紹介し、Helixを試してみたい人のためにちょっとしたチュートリアルです。
開発者は、モダンなCLIアプリケーションを簡単に構築できるライブラリのCharmプロジェクトのメンバーです。
次のCLIアプリケーションを開発しています。
-
Why I Use Neovim From Within VS Code - Joe Previte
-
その他
-
VIMKipedia: Or How I Built My Second Brain Using Vim - Theena Kumaragurunathan
Vimのプラグインを使用して、Zettelkastenを構築する方法を説明しています。
発表者は次の2つを使用しています。 -
Neovim Made Me Cry - Bashbunni
Neovim初心者が、Neovimを使い始めての感想を話しています。
プレゼン資料とかなく、トークのみだったので、内容が間違っている可能性あります。
-
VIMKipedia: Or How I Built My Second Brain Using Vim - Theena Kumaragurunathan
発表者のプロフィールは
Neovim Confの公式サイトを参考してください。
発表内容などのタイムテーブル
Neovimのニュースレター "This Week in Neovim" がなくなるかもしれない
"This Week in Neovim"(以後、TWiN)は、1週間の
- Neovim Coreの変更内容
- 新規プラグイン
- 既存プラグインのアップデート内容
などを日本時間だと毎週月曜日の夕方あたりに投稿しています。
TWiNを立ち上げたphaazon(Dimitri Sabadie)は
とブログ記事で書きました。
プラグイン作者がTWiNへ投稿して、その投稿を組み合わせてTWiNにする。
これがphaazonの理想のように私は印象を持ちました。
コミュニティが協力して、TWiNを作成し、TWiNをコミュニティのものにしたいんだと感じました。
TWiNをコミュニティのものにして、コミュニティ主導で管理して、phaazonがいなくてもTWiNを運用するのが目標なんだと思います。
phaazonの個人ブログではなく、Zennのように複数の人が投稿するものにTWiNをしたかったんだと思います。
現状のphaazon一人が頑張って殆ど作成するのは、phaazonの理想とはかけ離れています。
TWiNを公開し、続けていけば、読んだ人が投稿してくれると考えていたようです。
しかし、投稿してくれる人は少なかったようです。
投稿しやすいように大きなリファクタリングをして、Redditに投稿しても、TWiNへの投稿は増えなかったようです。
このRedditの投稿でphaazonは
"プラグイン作者がTWiNを考え、自分たちのニュースを自分たちで提供するようにしたかった" の様なことをコメントしています。
記事への反応
この記事への反応は大いにありました。
TWiNのことだけではなく、次の2点についても書いているからだと思います。
- phaazonが考えているNeovimのプラグインの問題点
- Rust製のHelixとNeovimの比較
Redditのスレッド
この記事への反応の効果で、行き詰まっていた、NeovimのコアチームとのTWiNプロジェクトの話し合いが、 良い方向へ進めばいいと願っています。
私もブログ記事を読みましたが、多分1番多くのNeovimプラグインを見てきた人が考えているNeovimのプラグインの問題点は面白く、考えさせられました。
mind.nvim と hop.nvim の今後について
ブログ記事では、phaazonが開発している次の2つのプラグインの開発方針についても書いています。
-
mind.nvim
メモやタスク、考えを整理しやすくするプラグイン
(使ってないので合っているのか分かりません)
Neovimのプラグインではなくして、Neovim以外のエディタでも使えるようにする。 -
Hop.nvim
指定した文字へ高速で移動するプラグイン
活発な活動はしない。暇がないため。
メンテナンスとバグ修正を続ける予定です。
プラグインのメタデータ仕様のドラフトの開発は止まっている
The Neovim package specification
2022年3月以降、コミットがありません。
メインコントリビュータがNeovimの開発から離れたせいかもしれません。
Neovim Core
Neoevimがv1.0を宣言するための条件リスト
リンク先に書かれていますが、"Path to version 1.0" と "Roadmap" は違います。
"justinmk" がRedditで投稿したコメントを読み、
自分なりに日本語に解釈したところ、次の通りになりました。
- Path to version 1.0 :: version 1.0 になるために必要な条件のリスト
- Roadmap :: Neovimの開発の方向性を説明するためのテーマ一覧。
テーマはいつでも変更・中止される。
Vim9ScriptをLuaにするトランスパイラ
Rustで実装しています。
次の2つのマージされたプルリクエストで使用されています。
これを使えば、全てではないですがVim9ScriptのプラグインをNeovimに移植できるようです。
Neovimコアへの追加機能と類似プラグイン
特定のプラグインと同じような機能をNeovimコアに追加、もしくは開発中みたいです。
プラグインの全ての機能ではなく、一部の機能だけを追加する場合もあります。
justinmkがRedditでコメントしていました。
返答しているプラグインの選択理由は分かりませんでした。
実装済
-
visual modeで
*
と#
をすると選択した範囲で検索する
v0.8.0から使えます
類似するプラグイン: vim-asterisk -
editorconfigを元にファイルを修正する
nightlyでしか使えません。
editorconfig.nvimをluaで書き直したもの -
読みこむファイルが信頼できるかをユーザに問い合わせる(
vim.secure.read()
)
nightlyでしか使えません。
類似するプラグイン: vim-localvimrc
開発中
-
プロジェクトに関するディレクトリを追加する
類似する機能を持つプラグイン: vim-rooter -
ウィンドウを閉じずにバッファを削除する
類似する機能を持つプラグイン: vim-bbye -
ファイルを開く時、そのファイルの最後のカーソル位置へ移動する
類似する機能を持つプラグイン: nvim-lastplace - 便利なマッピングを追加する
"improved defaults" で動いていると書いていますが、発見できませんでした。
類似するプラグイン: vim-unimpaired
Neovimコアに追加しないプラグイン機能と理由
- インデントの表示を変更する
見た目は変わるが役にたつものではなく、表示速度が遅くなるため
類似するプラグイン: indent-blankline.nvim - オートペア (
[
を入力したら]
が自動で挿入される)
オートペアのプラグインがあっても、実際の仕事が減るのを見たことない
類似するプラグイン: auto-pairs
オプションのデフォルト値の変更案
オプションの値に関するアンケートがRedditであり、
227人の回答が集められました。
デフォルトではない値が80%以上のオプションは、
その値をデフォルトにしようという話が進まれており、
回答の80%以上である次のオプションのデフォルト値が変更される可能性があります。
- termguicolors: true
- number: true
- ignorecase: true
- smartcase: true
- expandtab: true
アンケート結果を話題にしているissueとデフォルト変更に関するissue
では次のようなコメントがあります。
- termguicolors: true
検討する価値はあり。ただ、いくつか作業が必要になる可能性あり - number: true
- ignorecase & smartcase: true
- expandtab: true
filetypeプラグインで設定されるから、変更する意味が殆どありません
テストやドキュメント生成、テキストの整列などの沢山の便利ツールが入っているmini.nvimの開発者が、アンケートの作成者です。
画面左の行番号部分をカスタマイズできるようになった
画面左の行番号部分をカスタマイズするオプション statuscolumn
が実装されました。
2023年1月26日現在、 nightlyにしかない機能です。
これにより、ステータスラインの様に行番号部分を自分好みに変更できます。
statuscolumn
用のプラグインもあります。
プラグインの開発者は statuscolumn
のPRを作成した人です。
EditorConfigの対応が追加された
editorconfig.nvimのようなプラグインがなくても、標準でEditorConfigが適応されるようになりました。
2023年1月26日現在、 nightlyにしかない機能です。
editorconfig.nvimの開発者が、PRの作成者です。
.editorconfig
があると、自動でEditorConfigは適用されます。
次のようになります。
# 行末までの空白を削除する機能を有効にします
$ echo -e "[*.txt]\ntrim_trailing_whitespace = true" > .editorconfig
# 行末までの空白があるファイルを作成します
$ echo "trim_trailing_whitespace " > test.txt
$ cat --show-ends test.txt # 行末が `$` で表示されます
trim_trailing_whitespace $
# 書き込みをして、editorconfigを動かし、行末の空白を削除します。
$ nvim --headless --clean -c "wq" test.txt
"test.txt" "test.txt" 1L, 25B written
$ cat --show-ends test.txt # 行末が `$` で表示されます
trim_trailing_whitespace$ # 行末の空白が削除されている
見やすくするため、一部出力変更しています。
$ nvim --headless --clean -c "wq" test.txt
ですが、
最後に改行がないので、
$ nvim --headless --clean -c "wq" test.txt
"test.txt" "test.txt" 1L, 28B written$ cat --show-ends test.txt
になる可能性もあります。
しかし、見にくいので上のコンソール結果では改行しています。
この後もコンソール結果を出力しているものでは、同じことをしています。
nvim --clean
について
--clean
で、設定やプラグインは読みこまず、新規インストール時のNeovimと極力同じ環境にします。
editorconfigはビルドインプラグインなので、 -u NONE
にはしません。
-u NONE
にすると、editorconfigが動きません。
:Man
コマンドもビルドインプラグインなので、 -u NONE
にするとできません。
ヘルプファイル時に目次を表示する、 gO
も動きません。
.editorconfig
とカレントディレクトリ
.editorconfig
は、カレントディレクトリになくても適用されます。
親ディレクトリを調べて .editorconfig
があったら、その設定を適用します。
$ echo -e "[*.txt]\ntrim_trailing_whitespace = true" > .editorconfig
$ mkdir sub
$ cd sub # ディレクトリを移動する
$ echo "trim_trailing_whitespace " > test.txt
$ cat --show-ends test.txt # 行末が `$` で表示されます
trim_trailing_whitespace $
$ nvim --headless --clean -c "wq" test.txt
"test.txt" "test.txt" 1L, 25B written
$ cat --show-ends test.txt # 行末が `$` で表示されます
trim_trailing_whitespace$ # 行末の空白が削除されている
.editorconfig
がカレントディレクトリにあっても、 .editorconfig
があるディレクトリ配下にないファイルには適応されません。
$ mkdir sub
# サブディレクトリに `.editorconfig` を作成する
$ echo -e "[*.txt]\ntrim_trailing_whitespace = true" > sub/.editorconfig
$ echo "trim_trailing_whitespace " > test.txt
$ cat --show-ends test.txt # 行末が `$` で表示されます
trim_trailing_whitespace $
$ nvim --headless --clean -c "wq" test.txt
"test.txt" "test.txt" 1L, 25B written
# `.editorconfig` が適用されていないので、行末までの空白は削除されない
$ cat --show-ends test.txt # 行末が `$` で表示されます
trim_trailing_whitespace $ # 行末の空白が削除されています
.editorconfig
の内容を変更したら
Neovim内で .editorconfig
の内容を変更しても、すでに開いているバッファには適用されません。
edit
コマンドを使用して開き直すと、変更後の設定が適用されます。
insert_final_newline = false
の動作について
2023年1月26日現在、nightlyでは、 insert_final_newline = false
で最後に改行がある場合、改行を削除します。
なので、次のようになります。
$ echo -e "[*.txt]\ninsert_final_newline = false" > .editorconfig
$ echo "insert_final_newline = false" > insert.txt # 改行あり
$ echo -n "insert_final_newline = false" > no.txt # 改行なし
$ nvim --headless --clean -c "wq" insert.txt
"insert.txt" "insert.txt" [noeol] 1L, 28B written
$ nvim --headless --clean -c "wq" no.txt
"no.txt" "no.txt" [noeol] 1L, 28B written
$ diff insert.txt no.txt # 差分はなし
これはeditorconfig-vimと動作が違います。
editorconfig-vimの場合、insert_final_newline = false
で最後に改行がある場合、何もしません。改行を削除しません。
仕様の書き方が悪く、改行を削除するのが正しいのか、改行をそのままにするのが正しいのか、editorconfig公式でも決まっていません。
改行をそのままにするのが正しいなら、Neovimの標準のeditorconfigの動作も変更になります。
editorconfig
の値を取得する
editorconfigの "properties" テーブルにコールバック関数を追加すれば、編集しているファイルに対する editorconfig
の値を取得できます。
editorconfig.lua
require('editorconfig').properties.trim_trailing_whitespace = function(bufnr, val, opts)
print("バッファ番号: " .. bufnr)
-- プロパティの値が `properties.trim_trailing_whitespace` の場合、
-- `trim_trailing_whitespace` の値を参照します。
print("プロパティの値: " .. val)
print("編集中のファイルに適用されているeditorconfigの値全て")
vim.pretty_print(opts)
end
.editorconfig
[*.txt]
trim_trailing_whitespace = true
nvim --headless --clean -u editorconfig.lua test.txt -c quit
の結果
バッファ番号: 1
プロパティの値: true
編集中のファイルに適用されているeditorconfigの値全て
{
trim_trailing_whitespace = "true"
}
プロパティの値がないとコールバック関数は実行されません。
そのため、 次のように編集しているファイルに対して、trim_trailing_whitespace
が設定されていないとコールバック関数は実行されません。
上で設定したコールバック関数が実行されない .editorconfig
の例
[*.txt]
insert_final_newline = false
[*.txt]
insert_final_newline = false
[*.adoc]
trim_trailing_whitespace = true
editorconfigにはないプロパティも設定できます
editorconfig.lua
require('editorconfig').properties.apple = function(bufnr, val, opts)
print("バッファ番号: " .. bufnr)
print("プロパティの値: " .. val)
print("編集中のファイルに適用されているeditorconfigの値全て")
vim.pretty_print(opts)
end
.editorconfig
[*.txt]
trim_trailing_whitespace = true
apple = banana
nvim --headless --clean -u editorconfig.lua test.txt -c quit
の結果
バッファ番号: 1
プロパティの値: banana
編集中のファイルに適用されているeditorconfigの値全て
{
apple = "banana",
trim_trailing_whitespace = "true"
}
optsには編集中のファイルのみに適用されている値が入ります
editorconfig.lua
require('editorconfig').properties.format = function(bufnr, val, opts)
print("バッファ番号: " .. bufnr)
print("プロパティの値: " .. val)
print("編集中のファイルに適用されているeditorconfigの値全て")
vim.pretty_print(opts)
end
.editorconfig
root = true
[*]
end_of_line = lf
charset = utf-8
[*.txt]
trim_trailing_whitespace = true
format = editorconfig-checker
[*.norg]
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
max_line_length = 80
[*.dj]
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
max_line_length = 80
nvim --headless --clean -u editorconfig.lua test.txt -c quit
の結果
バッファ番号: 1
プロパティの値: editorconfig-checker
編集中のファイルに適用されているeditorconfigの値全て
{
charset = "utf-8",
end_of_line = "lf",
format = "editorconfig-checker",
root = true,
trim_trailing_whitespace = "true"
}
プロパティが格納されている引数の値は文字列です
editorconfig.lua
require('editorconfig').properties.boolean = function(bufnr, val, opts)
print("バッファ番号: " .. bufnr)
print("プロパティの値: " .. val)
print("編集中のファイルに適用されているeditorconfigの値全て")
vim.pretty_print(opts)
print("プロパティの値の引数は文字列に変換されます")
print("引数のbufnrの型は" .. type(bufnr))
print("引数のvalの型は" .. type(val))
print("引数のopts.booleanの型は" .. type(opts.boolean))
if val then
print("`val` は文字列になるので、プロパティの値が `false` の場合でも、" ..
"`if val then some() end` の `some()` は実行されます")
end
end
.editorconfig
[*.txt]
trim_trailing_whitespace = true
boolean = false
number = 1
string = str
space = no quote
underscore = no_quote
key = no-quote
single_quote = 'apple'
double_quote = "apple"
japanese = 日本語
array = {1,2,3}
array_string = "{1,2,3}"
dict = {a = 1}
dict_string = "{a = 1, b = 2}"
key-name = kebab
nvim --headless --clean -u editorconfig.lua test.txt -c quit
の結果
バッファ番号: 1
プロパティの値: false
編集中のファイルに適用されているeditorconfigの値全て
{
array = "{1,2,3}",
array_string = '"{1,2,3}"',
boolean = "false",
dict = "{a = 1}",
dict_string = '"{a = 1, b = 2}"',
double_quote = '"apple"',
japanese = "日本語",
key = "no-quote",
["key-name"] = "kebab",
number = "1",
single_quote = "'apple'",
space = "no quote",
string = "str",
trim_trailing_whitespace = "true",
underscore = "no_quote"
}
プロパティの値の引数は文字列に変換されます
引数のbufnrの型はnumber
引数のvalの型はstring
引数のopts.booleanの型はstring
`val` は文字列になるので、プロパティの値が `false` の場合、`if val then some() end` の `some()` は実行されます
++p
フラグ
ディレクトリを作成する write の :write ++p sub/apple/banana.txt
コマンドを実行した際、 sub/apple
ディレクトリがなくても、ファイルは作成されます。
++p
フラグのおかげで、 sub/apple
ディレクトリを作成してくれるからです。
2023年1月27日現在、 nightlyにしかない機能です。
$ ls sub sub/apple # ディレクトリがないことを確認する
ls: cannot access 'sub': No such file or directory
ls: cannot access 'sub/apple': No such file or directory
# `sub/apple` ディレクトリがないためエラーになる
$ nvim --headless -u NONE -c "write sub/apple/banana.txt" -c "quit"
"sub/apple/banana.txt"
Error detected while processing command line:
E212: Can't open file for writing: no such file or directory
$ file sub/apple/banana.txt
sub/apple/banana.txt: cannot open `sub/apple/banana.txt' (No such file or directory)
# ファイルは作成されていない
# `++p` フラグがあるため、 `sub/apple` ディレクトリを作成してくれる
$ nvim --headless -u NONE -c "write ++p sub/apple/banana.txt" -c "quit"
"sub/apple/banana.txt" "sub/apple/banana.txt" [New] 0L, 0B written
$ file sub/apple/banana.txt
sub/apple/banana.txt: empty # ファイルは作成されている
設定
TJとThePrimeagenのNeovim設定構築動画
Neovim Conf 2022の司会者2人の設定構築動画が投稿されました。
LSPの設定もしています。
パッケージマネージャはPacker.nvimを使用しています。
Lazy.nvimではありません。
Migrating from Packer.nvim to Lazy.nvim
などを参考にして、Packer.nvimからLazy.nvimに移行してください。
パッケージマネージャーのLazy.nvim専用のスタータキット LazyVim v1リリース
パッケージマネージャー(Lazy.nvim)と開発者が同じです。
Redditのスレッドで開発者が次のようなコメントをしています
- Lazy.nvimのために作られたのが、LunarvimやAstroNvimなどとの主な違い
- lazy.nvimの便利な使い方を得られるかもしれないので、LazyVimを使わなくても、設定内容を見てみるといいよ
- GitHub Sponsorsなどの寄付は必要ないよ
LazyVimも含め、次のような設定済みのNeovim設定の名称が分かりません。
上ではスタータキットと書いていますが、合っている可能性低いです。
プラグイン
ドキュメント生成・自動リリースがあるプラグインテンプレート
特徴
- ドキュメント生成
- 自動リリース
- テスト
- フォーマットチェック
- リンター(luacheck)はなし
ドキュメント生成と自動リリースのGitHub Actionsを参考にしたRedditのスレッド
ターミナルバッファの操作を改善するプラグイン
ノーマルモードのカーソル位置を、ターミナルモードのカーソル位置にするプラグインです。
現在のnightly、ターミナルモードとノーマルモードでカーソル位置は共有されません。
そのため次のようになります。 |
がカーソル位置です。
- ターミナルモードで
donut
の後にカーソルを移動する
apple banana donut|
- ノーマルモードにして
banana
の後にカーソルを移動する
apple banana|donut
- ターミナルモードにすると、1の
donut
の後がカーソルの位置になる
apple banana donut|
- ターミナルモードで
cake
を入力する
apple banana donut cake|
term-edit.nvimを使うと、次のように変更されます。
- ターミナルモードで
donut
の後にカーソルを移動する
apple banana donut|
- ノーマルモードにして
banana
の後にカーソルを移動する
apple banana|donut
-
i
でターミナルモードにすると、banana
の後がカーソルの位置になる。
ノーマルモードのカーソル位置が、そのままターミナルモードのカーソル位置になる
apple banana|donut
- ターミナルモードで
cake
を入力する
apple banana cake|donut
Neovimに標準搭載されるかもしれないです。
"justinmk" がRedditで "間違いなくNeovimのコアに欲しいもの" とコメントしています。
Open AIを使用するプラグイン
2つの違いは分かりませんでした。
ドキュメント
Neovim内でv0.8からv0.9の変更点を見る
:help news
をやると、v0.8かv0.9までの変更点が見れます。
破壊的変更や新機能で章が分かれてて、見やすいです
nightlyでしかできません。 v0.8.2
ではできませんでした。
nvim-lua-guideがアーカイブになった
nvim-lua-guideをベースとして、大幅に作り直したものがヘルプファイルに追加されたからです。
nvim-lua-guideの和訳をしているnvim-lua-guide-jaも、今後は更新されないと思います。
その他
Neovimのプラグイン&カラースキームを探せるWebサイト
-
NeoLand
- プラグインとカラースキームが分かれている
-
neovimcraft
- プラグインとカラースキームは分かれていない
- ターミナルで検索できる
- リポジトリにあるjsonファイルに書かれているプラグインを表示している
GitHub Actionsを使用して、自動で追加・変更している
-
vimcolorschemes
- プレビュー付きでカラースキーム一覧が見れます
- 2023年1月26日現在、検索機能は使えません。バグ修正中らしいです。
スターかフォークの多さ順に並べる検索サイト
Neovimに関するリポジトリをスターかフォークの多さ順に表示します。
プラグイン専門ではありません。
そのため、Neovim自体やfzf、awesome-neovim、dotfilesも含まれます。
検索もありますが、こちらはスターかフォークの多さ順に並びません。
並び順も分かりません。
Discussion
Vimディストリビューションという呼称が一般的なようです。