みこやん

2021.12.17

自動補完機能を失って久しかったVimmerな私が、ようやくたどり着いた念願の新世代自動補完フレームワーク「ddc」を導入してみた

こんにちは。ヒコーキ好きのみこやんです。

実は私、昔からのVimmerです。
って、いきなりこんな独白されても困りますよね。

でもガマンしてください(ニコ)。

そう、私とVimとの付き合いは、もうかれこれ20年ぐらいの付き合いになります。

当時は物理サーバのインフラ屋、というか何でも屋をやっていました。
Linuxが世界的に普及していく中で、私が所属していた組織ではFreeBSDを中心としたBSD系OSでシステム構築をしていました。

Emacsは当時からカスタマイズ性に富むものの重かったこともあり、MuleというEmacsライクな日本語も気楽に扱える日本発のエディタを使っていました。
文章作成(LaTeXなどのマークアップ言語を使ったもの)やプログラミング、メールの読み書きなど、IT生活のほとんどはターミナルとMuleがお供でした。
しかし、いつしかEmacs Lispでのカスタマイズも疲弊してきて、もっとカスタマイズも操作も扱いやすいものが欲しい…と思ったところで、Vimに切り替えました。

ちなみにVimでもメールの読み書きをしていました。
いや、厳密に言うと、muttという、メール作成を外部エディタに依存するターミナルで動作するMUA(メーラ)を使い、外部エディタにVimを指定していました。
その頃から、MuleにかわってVimが生活の一部となっていきました。

……すみません、また昔話をしてしまいました。

そんなVimもすでにVim8.2系になり、さまざまな古きプラグインも開発が途絶えたり、その結果非対応で使えなくなっていくものもボチボチで始めました。

特に、プログラミングで重要となるのが、キーワードや変数・関数名などを途中入力から候補を提示してくれる、いわゆる自動補完ツールです。
なるべく最新版のVimを使うようにしている私としては、長年使っていたneocompleteも開発終了し8.2系の途中からは動作しなくなってしまい、それ以降、自動補完なしの日々を続けていました。

ようやく最近になって、neocompleteと同じ作者の方がddcという新世代自動補完フレームワークの開発をしているご本人記事を見つけたので、これを導入してみました。
ただし、まだbeta版ということなので、そのあたりはこころして使用する必要があるかもしれません。

ご注意

本記事での紹介は、私の環境であるmacOSと、UNIX系OSでの作業例となります。
また、ddcがサポートしているVimのバージョンはVim 8.2.0662以降となります。気になる方は、自分のVimのバージョンを以下のように確認してみてください。

「Vi IMproved 8.2」となっていて、「適用済パッチ」が「*-662」以上になっていれば大丈夫でしょう。
私の(業務用の)MacBook ProではmacOSがCatalinaで止めてあるため、標準バンドルのVimは8.1系です(/usr/bin/vim –versionで確認できます)。つまり、macOSのバージョンによってはOS標準のVim8のバージョンに差があると予想されます。
もしご自身のバージョンがVim8.2.662未満の場合は、brewなりMacPortsなり、あるいはソースコードから独自ビルドで、8.2系とパッチレベル662以上のパッチを適用したVimをインストールする必要があるのでご注意ください。

Vimプラグイン自体のインストールや設定については、OSを問わないと思いますが、一部準備についてはOSごとに異なったり、パッケージマネージャの違いによって異なりますが、こちらの説明も割愛いたします。

準備

ddcを利用するには、DenoというNode.jsライクなJavaScriptランタイム環境をインストールする必要があります。
パッケージマネージャやインストーラ次第では、こちらの準備のほうがめんどくさいかもしれません。

ただ、従来の自動保管プラグインでは、VimがPython付きでビルドされたバイナリであることが求められたほか、Python環境が整備されVimで使用するための補助ツールもpipコマンド等で事前にインストールしておくなど、使用までの壁が高かったことが環境整備の難点でもありました。それを考えると、DenoのインストールとDenoとVimのインタフェースとなるプラグインを導入するだけで使えるようになるので、かなり「導入から実際に使えるまでの壁」は下がったのではないか、と個人的には理解しています。

DenoのInstallationの項を見ると、どのOSでもだいたい1コマンド実行でインストールできそうです。私はmacOSで開発をしていて、じいちゃんの遺言でbrewではなくMacPortsを使う人なので、MacPortsインストールで準備しました(単にBSD系OSを長く使っていたこともあってバイナリインストールよりports系インストールへの安心感があるだけ)。

プラグインインストール

インストールは、ddcのREADME.mdに記載されている通りに作業すれば問題ないでしょう。
私は(やはりddcと同じ作者の)deinというVimプラグイン管理ツールを使っているので、以下のように.vimrcに記述した後、Vimを1回終了してから起動してdeinからインストールを行うことで完了します(deinのインストールもREADME.mdを読めばわかると思いますので割愛します)。

基本は上記2行で利用可能です。ddc.vimはddc本体で、denops.vimはDenoをVim上で扱うためのプラグインになります。
次の3行は、カーソル付近の単語などを内部バッファに入れて候補にしたり、ランク付けして並び替えるなどの便利プラグインで、ddcのセットアップ例に記載されているものをそのまま使用しています。

deinを使っている場合は、.vimrcを保存したあとにVimを起動し、以下をVimで実行すればインストール完了です。

設定

設定も、ddcのドキュメントに記載のデフォルト設定のまま.vimrcに記述し、使用することができます。
細かい微調整や設定ができる点は喜ばしくもありますが、neocompleteが使用付加になってからずっと難儀してきた状態を考えると「まずは何も考えずに利用できる」状態にもっていきたいという気持ちが強かったので、デフォルト設定のままで満足して使用することにしました。不便が生じたらカスタマイズを考えるかもしれません。

基本的に設定はこれだけです。

使ってみた

.vimrcへの設定が終わってからVimを再起動し、適当な従来コードを読み込んで入力作業をしてみると、無事に自動補完が機能しました。
IDEなどの統合環境型エディタではあたりまえのように整っている自動補完ですが、やっとVim8.2系でちゃんと使えるプラグインに巡り合えたことに感謝です。

次回も、もしかしたらVimmerライフなブログをお送りするかもしれません(開発ネタでなくてスミマセン……)。

みこやん

プログラミングもサーバもフロント(チョトだけ)もインフラ(オンプレ中心)もwebもゲームも組み込みも幅広く何でも雑多にやってきた古株ですが、フルスタックではありません。好きなものはプログラミングと計算機科学。我々と一緒に好きなプログラミングを楽しみませんか?

RELATION ENTRY

みこやんの記事一覧へ

▶︎