英和辞書をポップアップするVimプラグインを作った

ついこの間、Vim に popup が実装されたという話題と、Mouse Dictionaryがタイムラインに流れてきました。 自分も Vim の Popup を使って英単語の意味を調べるプラグインを作ってみました。

スクリーンショット

GitHub レポジトリはこちらです。

使い方

dein.vim や vim-plug のパッケージマネージャーでインストールできるはずです。

" vim-plug
Plug 'ueokande/popupdict.vim'

" dein.vim:
dein#add('ueokande/popupdict.vim')

" NeoBundle
NeoBundle 'ueokande/popupdict.vim'

設定可能な変数は以下の 2 つです。

name default description
g:popup_enabled 1 1 なら Popup を表示する
g:popup_width 60 Popup の横幅

内部構造

今回はとりあえず動くものを作りたかったので、単語の候補と意味はキーバリューのオブジェクトに格納しました。 また動詞の過去形や現在進行系から意味を取れないので、動詞を現在形に正規化する処理をします。 これも動詞の変化形と原形をキーバリューに持つオブジェクトに格納します。

辞書データに元の単語と原形両方の意味があれば、2 つとも表示します。 なぜなら一部の名詞となった動詞は、別の意味を持つ可能性があるからです。

辞書を引くフロー

動詞の原形および辞書のデータは以下のレポジトリのものを使用させていただきました。

実装する上での懸念点として、パフォーマンスの点で懸念がありました。 動詞の変形の辞書は 26,605 エントリ、翻訳の辞書は 46,840 エントリあります。 これを快適に表示できるか、起動が遅くならないかが気になりました。 実際に実装してみて、それは気にするほどにパフォーマンスに影響はありませんでした。

まとめ

自分は Vim プラグインの経験は浅くちょこっとした小物を作った程度した。 これも実装料は大したことはありませんが、Vim の力強さを改めて認識しました。 標準機能だと物足りなかったことが、ちょっとしたスクリプトを書いて便利にするという点では、ブラウザ拡張と似ているなと思いました。


Profile picture

Shin'ya Ueoka

B2B向けSaaSを提供する会社の、元Webエンジニア。今はエンジニアリング組織のマネジメントをしている。