akishin999の日記

調べた事などを書いて行きます。

Vim で英語を書く時に便利なプラグインいくつか

情けない事にいつまで経っても英語は苦手なままなのですが、プログラマたるもの、自分のプログラム内できちんとした名前を付けるためには避けて通る事は出来ません。
とはいえ、毎回毎回 Web で検索するのにも疲れてきたので、 Vim で英語を書いたり調べたりするのに便利そうなプラグインを探してインストール、設定してみました。

ref.vim

まずは Web 上の辞書サイトなどを Vim から引けるようにするため、ref.vim を導入します。

thinca/vim-ref
https://github.com/thinca/vim-ref

Web 上の辞書を引くためには ref.vim に含まれる ref-webdict を使うのですが、そのためにはテキストブラウザが必要になります。
ref-webdict では以下のテキストブラウザに対応しているようです。

ここでは lynx をインストールしました。
OS は Ubuntu なので以下を実行。

% sudo apt-get install lynx

インストールが完了したら設定ファイルを編集します。

% sudo vi /etc/lynx-cur/lynx.cfg

日本語環境で使うので、以下のように変更します。

・
・
・
#CHARACTER_SET:iso-8859-1
CHARACTER_SET:utf-8
・
・
・
#PREFERRED_LANGUAGE:en
PREFERRED_LANGUAGE:ja
・
・
・

これで ref-webdict を使用する準備が出来たので、いよいよ vim プラグインの方を導入します。
NeoBundle を使っているので、以下のように .vimrc に記述しました。

NeoBundle 'thinca/vim-ref'
NeoBundle 'mfumi/ref-dicts-en'
NeoBundle 'tyru/vim-altercmd'

英英辞書を検索するための ref-dicts-en と Vim コマンドに短いエイリアスを付けられる vim-altercmd も併せて導入しています。
保存したら再読み込みして :NeoBundleInstall を実行すればインストールは完了。
インストールが終わったら ref-webdict 用に辞書サイトの設定を行います。

ここでは .vimrc に以下のような設定を入れました。
辞書定義は karakaram-blog さんの記事で紹介されていたものをそのまま使わせて頂きました。

" vim-ref のバッファを q で閉じられるようにする
autocmd FileType ref-* nnoremap <buffer> <silent> q :<C-u>close<CR>

" 辞書定義
let g:ref_source_webdict_sites = {
\   'je': {
\     'url': 'http://dictionary.infoseek.ne.jp/jeword/%s',
\   },
\   'ej': {
\     'url': 'http://dictionary.infoseek.ne.jp/ejword/%s',
\   },
\ }

" デフォルトサイト
let g:ref_source_webdict_sites.default = 'ej'

" 出力に対するフィルタ
" 最初の数行を削除
function! g:ref_source_webdict_sites.je.filter(output)
  return join(split(a:output, "\n")[15 :], "\n")
endfunction

function! g:ref_source_webdict_sites.ej.filter(output)
  return join(split(a:output, "\n")[15 :], "\n")
endfunction

このままでも便利なのですが、 webdict は使用する時に「:Ref webdict ej 英単語」のようにタイプしなければならないのでちょっと面倒くさいですね。
という事でもう少し短いコマンドで使用できるようにするために以下のような vim-altercmd の設定を入れています。

call altercmd#load()
CAlterCommand ej Ref webdict ej
CAlterCommand je Ref webdict je

これでコマンドモードで「:ej 英単語」のように入力すれば「:Ref webdict ej 英単語」に展開され、Infoseekマルチ辞書を検索できるようになりました。
同様に webdict の設定を追加することで、他の辞書サイトを追加出来ます。

但し、alc のように Web ブラウザからの利用以外を禁止しているサイトもあるようなので、利用規約には十分注意して下さい。

英辞郎 on the WEB の利用規約とか - 永遠に未完成
http://d.hatena.ne.jp/thinca/20120515/1337017232

また、同時にインストールした ref ソース「mfumi/ref-dicts-en」により、以下の英英辞書なども検索できるようになっています。

これらは ref ソースとして追加されているので、「:Ref answers 英単語」のようにして検索できます。
タイプ量が気になる場合は、これらのソースについても vim-altercmd の設定を追加すると良いと思います。

excitetranslate-vim

excitetranslate-vim は、バッファ上もしくはビジュアルモードで選択した範囲の文字列を Excite翻訳を使って翻訳する事ができるようになる Vim プラグインです。

mattn/excitetranslate-vim
https://github.com/mattn/excitetranslate-vim

以下を .vimrc に記述して :NeoBundleInstall 実行。

NeoBundle 'mattn/webapi-vim'
NeoBundle 'mattn/excitetranslate-vim'

これで :ExciteTranslate を実行するとバッファ上のテキストが Excite 翻訳で翻訳されるようになりました。
ちょっとタイプ量が多いのでキーマップを定義するか、先ほどと同様 vim-altercmd の設定を入れると便利です。

また、実行するとウインドウが分割されるので、以下のように q で開いたバッファを閉じれるように設定しています。

" 開いたバッファを q で閉じれるようにする
autocmd BufEnter ==Translate==\ Excite nnoremap <buffer> <silent> q :<C-u>close<CR>

英和、和英の判定を自動で行ってくれたりと非常に便利です。

neco-look

neco-look は neocomplcache または neocomplete のプラグインで、英単語を入力した際に look コマンドの結果で補完を表示してくれます。
(neocomplcache または neocomplete はインストール、設定されているものとします。)

ujihisa/neco-look
https://github.com/ujihisa/neco-look

Ubuntu であれば恐らく最初から look コマンドと辞書ファイルがインストールされています。
というか、私の環境では気付いたら入っていました。
パッケージ的には bsdmainutils のようです。

インストールされている場合、ターミナルで実行すると以下のような結果が得られると思います。

% look program                                                                                                                      (git)-[master] -
program
program's
programed
programer
programer's
programers
programing
programmable
programmable's
programmables
programmed
programmer
programmer's
programmers
programming
programming's
programs

こんな感じで look が使えれば準備は OK。
以下を .vimrc に記述して :NeoBundleInstall を実行します。

NeoBundle 'ujihisa/neco-look'

これだけで適当な英単語をタイプすると以下のように補完候補が表示されるようになります。


他にもあるかもですが、取りあえず調べた範囲で便利そうなプラグインを一通り入れてみました。
Vim にはスペルチェック機能もありますし、これで変数名やメソッド名を考えるのも大分楽になりますね(?)。

参考サイト

vim-refを導入する [2012年版] | karakaram-blog
http://www.karakaram.com/20120726-vim-ref

vim-refのwebdictで英和・和英辞書を参照する | karakaram-blog
http://www.karakaram.com/ref-webdict

ref.vimから英英を引く - mfumiの日記
http://d.hatena.ne.jp/mFumi/20111229/1325145325

vimでスペルを確認する - まる-おぶ-ざ-でい
http://d.hatena.ne.jp/wiredool/20121212/1355315368

Vimで英文をうちこむときにはかどりそうなプラグインと設定 - Qiita [キータ]
http://qiita.com/hatchinee/items/960c3222dc0c5605a169