Vim で英語の文章を作成しやすくする

ujihisa/neco-look

このプラグインはlookコマンドとneocomplcacheを使用して 英単語の補完を行うプラギンです。

  1. 使用するにはlookコマンドが使用できること
  2. Neocomplacache が使用できること

が必須です。

なお、私はvimのプラギン管理にはNeoBundleを使用しているので、 これも導入済みであることを前提に記述していきます。

lookコマンド

まず、このコマンドが使用できるかを確かめます。 これに関してはMacとLinuxで挙動が異なるらしいので、 一応使用して見るのが吉でしょう。

$look hello

lookコマンドは上記のように 英単語を入力すると,ある場所の辞書ファイルを検索し結果を出力します. まぁ,イメージ的には grep の機能を限定した代わりに使いやすくなったものですかね. なお,ある場所というのは

:: /usr/share/dict/words

らしいです.

おそらくはLinuxであれば初期から入っているコマンドであると思いますが, ディストリビューションによって初期の挙動は異なるようです.

debian系ではそのまま使用できると思いますが, Fedora,opensuseでは,辞書ファイルが存在しないと怒られます. なんで,これを作成してしまいましょう.

  • lookコマンドが使用できる場合,かつ,その出力で満足できる場合は以下の2つの章は飛ばしてください

辞書ファイルの入手

無料で使用できる辞書データとして有名なのはgene95です. とりあえず下記のリンク先からインストールできます.

適当に解凍しやすい形式のファイルをダウンロードし,任意のディレクトリに解凍します.

辞書ファイルの加工

ダウンロードされたファイルはそのままlookコマンドに対応した形式にはなっていないので, いくつかの作業を行います,

まず,このファイルはwindowsを前提に作成されているらしいので,一度文字コード変換を行わないとどうしようもありません.

また,日本語と英語が別の行に書かれているので,これを一行にまとめてやる必要があります.

最後に neocomplacache で文章に挿入する形なので,英単語のみを記述した行も欲しいです(この行も作成しないと英単語の補完を行った際に日本語も挿入されてしまう).

これらの作業を行うスクリプトをメモしておきます. 結構適当に書いたので,実は変なことが起きているかもしれません.

  • 具体的には3行目
    • もともとのデータがキチンとスペースの一文字区切りになっているかあんまり自信がない(splitの選択でうまいこと任意のスペース数にすればいいのだけど)
nkf -w gene.txt | \
perl -ne 'chop;chop; $_=" $_\n" if ($.%2 == 0);print;' | \
perl -pe 'chop;@a = split(/s+/, $_); $_="$_\n$a[0]\n";' > words

とりあえず,丁寧な整形は後回しにするとして,これをlookコマンドが参照する箇所に保存します.

sudo -icp words /usr/share/dict/words

これでlookコマンドが使用できるようになったはずです