ついこの間、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 の力強さを改めて認識しました。 標準機能だと物足りなかったことが、ちょっとしたスクリプトを書いて便利にするという点では、ブラウザ拡張と似ているなと思いました。