Vimのすゝめ改

第5回 neovim への Pull Request 紹介

2021.07.07

Vim 使いの「ブイ」(仮名)です。Vim のすゝめ改では、現代のテキストエディタについ てのあらゆる話題をテーマに Vim の視点から見た話を行います。

今回のテーマは「neovim への Pull Request 紹介」です。

前回は Vim への Pull Request を眺めましたが、それの neovim 版です。 neovim は Vim よりも Pull Request が活用されており、巨大な Pull Request のまま 開発が進むことが多くあります。 neovim の LSP Client 機能も、もとは Pull Request から始まったのです。 neovim HEAD を追い掛けるのに物足りなさを感じた場合は neovim の今後の方向性に思 いを馳せるのもよいのではないでしょうか。

1 --server, --remote-{subcommand} 機能

https://github.com/neovim/neovim/pull/11326

Vim にはリモート編集機能と呼ばれるものがあり、外部から特定のコマンドを実行する ことで現在実行中の Vim に任意のファイルを編集するようにすることができます。 この機能は neovim になってなくなってしまったのですが、上記の Pull Request で実 装されるようです。作業が止まってしまっているのが気がかりです。

2 tree sitter

https://github.com/neovim/neovim/pull/11113

tree sitter によるハイライトを実 装する Pull Request です。tree sitter とはコードの解析を行う解析器であり、Atom エディタにも使用されているようです。現在 Vim や neovim は正規表現を用いてハイラ イトを行っているのでハイライトが遅いという問題を抱えています。 tree sitter により、この問題を根本的に解決することができるかもしれません。 この機能は既に neovim にマージされており、次回の「Vim のすゝめ改」にて解説予定 です。

3 UIEnter/UILeave

https://github.com/neovim/neovim/pull/11263

neovim の GUI の起動・終了に hook するための autocmd 実装です。GVim でいう GUIEnter に相当します。従来の neovim はこの hook がなかったので、GUI クライアン トに依存した処理を書きにくいという問題がありました。

4 Context and Multiprocessing

https://github.com/neovim/neovim/pull/10843

外部コマンドをバックグラウンドで実行するコマンドの追加です。 バックグラウンドでコマンドを起動するために、従来は複雑な Vim script を記述しな ければならず、プラグインを用いなければ困難でした。 このパッチがマージされれば、Vim script を記述しなくても手軽にバックグラウンド実 行が行えるはずです。

例えば、

:&:vimgrep {pattern} {file} ...

でバックグラウンドによる grep が実行できます。

他にも call_async(), call_parallel(), call_wait() といった API が追加され ています。

巨大なパッチなので取り込まれるのには時間がかかりそうだが、夢がある新機能ですね。 余談ですが、このプロジェクトは元々GSoC 2019 だったそうです。

https://github.com/neovim/neovim/pull/9943

This article is made by Vim.

著者プロフィール

v

ブイ。社内では数少ない Vim 使い。ブログ記事の執筆により、社内でのVim の知名度を上げ、Vim を使用する人を増やそうと計画しているらしい。

記事一覧Index