🐜

denopsで変わったinit.vim

2021/12/13に公開

この記事は、ITRCアドベントカレンダー の13日目です。

前の記事は茶屋辻さんの「wireguardについて」でした。

明日は蒼鍵さんの予定です。

ごあいさつ

この前はいかにも締め切りギリギリで捻り出したような記事を書いてしまって申し訳ありません。実は締め切り二日前に書いてました。

この記事は締め切り前日に書いているので多分大丈夫だと思います。

本題

さて、今年はVim界隈で様々なパラダイムシフトが起きていたのは皆さん御存じかと思います。前の記事でも書きましたね。

今回は、そんなパラダイムシフトによってこの1年間、絶え間なく変化を続けた僕の init.vim について書いていきたいと思います。

実際にはNeovim本格的に使い始めたのが1年前なので、これは僕のVimmerとしての成長の足跡と言っても過言ではなかったりします。まあ一度コミットログ爆破したので一ヶ月前ぐらいまでしか残ってませんが

変化していく.vimrc

Neovimでは主に init.vim と呼称されていますが、ややこしいのでvimrcに統一しちゃいます。

エンジニアの楽園記事で「Matzの言うところの環境改善オタク」と称されたVimmer、あるいはMatz氏に直接そう呼ばれたEmacserの方々なら身に覚えがあるかと思いますが、テキストエディタオタクの環境は日々変化していきます。

それこそ、PDCAが正常に回り続けるプロジェクトのように流動的な変化を魅せるのがvimrcです。なお個人開発の開発フローは全然回りません。なんででしょうね。

https://github.com/gamoutatsumi/dotfiles/tree/master/.config/nvim

まずはこのリポジトリを貼っておきます。余計なファイルが多いので、Neovimの設定が入ってるディレクトリのリンクだけ引っ張ってきました。 まあこのディレクトリに限っても使ってない設定とか大量にあるんですが。

本来であればvimrc読書会っぽく行番号とか貼っていけたらいいのですが、めんどくさい大変なのでやりません。

今使っているプラグイン

代わりに、今使っているプラグインとか、そのプラグインを使うにあたって工夫した設定とか書いていきたいと思います。

ddc.vim

https://github.com/Shougo/ddc.vim

まず、この1年を語るにあたって、絶対に外せないプラグインの1つがこの ddc.vim です。

有名な日本人プラグイン作者であるShougoさんが作成した、 Dark deno-powered completion framework です。要するに次世代の†Dark Powered Plugin†ですね。シビれます。

あらゆる補完ソース、ソート・マッチング方式を独立した拡張機能とする事で、ユーザーが本当に必要な機能だけを盛り込む事ができます。今流行りのトッピングシステムですね。

僕が今入れている主な拡張機能は以下の通りです。

  • 補完ソース
    • Shougo/ddc-around
    • LumaKernel/ddc-file
    • Shougo/ddc-nvim-lsp
  • ソート方式
    • tani/ddc-fuzzy
  • マッチング方式
    • tani/ddc-fuzzy

主にFuzzy Matchingをベースにして普段は開発している事が分かりますね。この辺りは好みなので、好きなフィルターを見つけるか、あるいは自分で作っても構いません。ちなみにアルゴリズムが書けるなら割と簡単に作れます。

速度や安定性もさすがと言うべき完成度で、暗黒美無王ここにありと言った感じです。

ちなみに以前はcoc.nvimを使っていました。やはりオールインワンもそれはそれで大正義ですね。

skkeleton

https://github.com/vim-skk/skkeleton

次もやはりdenops絡みです。

denopsで実装されたVim向けのSKK、その名もskkeletonです。

元々、Vimにはskk.vimやeskk.vimといったSKKの実装が存在したのですが、長い歴史のうちに難読化してしまい、そもそもが巨大なコードベースと相性の悪いVim scriptだった事でほぼメンテ不可能になっていたという経緯があります。

そこに現れたのが、TypeScriptというメンテナンス性の高い言語で実装されたskkeletonです。

こちらには僕もちょくちょくコントリビュートした結果、Organizationに招待していただいたりしたのですが、あまり参加できずにいて申し訳ない限りです。

現在もっとも活発にメンテナンスされているVimのSKK実装であり、まだ足りない機能も多いものの、この記事をskkeletonで書いていると言えば、その完成度合いが伝わるでしょうか。

ddcと連携した補完候補の表示などにも対応しており、今からVimでSKKを使うならこのプラグインがおすすめです。ついでにバグ報告なんかあるとありがたいかもしれません(他人事)

telescope.nvim

https://github.com/nvim-telescope/telescope.nvim

次は特にdenops関係ないです。

Lua製のNeovim向けFuzzy Finderです。

ちょっと前までdeniteを試していたのですが、ちょっと気分を変えて使ってみる事にしました。

が、やはりLua製で、かつNeovim前提で調整してあるだけあって、速度も含めた使い勝手は最高の一言に尽きます。

deniteも決してパフォーマンスで劣っている訳ではないのですが、現在Neovimを使う上で一歩劣るのは否めません。
そもそもdeniteは現在、dduの開発のためサポートを停止していますし、しばらくはtelescopeを使い続けると思います。

それにしてもFuzzy Finder便利ですね。最近まであまり使いこなせていなかったのですが、勝手が分かると明らかに操作のテンポがいいです。

まとめ

雑なまとめに入ってしまいますが、やはりdenops製のDark Powered Vim Pluginが出たことにより、denopsのシェアが伸びようとしているのが大きいと思います。
denopsユーザーが増えれば、それだけdenops製プラグインが増えたり、denopsの完成度も上がっていくと思います。

coc.nvimとはちょっと違いますが、Vimプラグインを使う上で選択肢の1つとしてメジャーになれば面白くなりそうな気がしています。

Discussion