英語を書けないクソ雑魚日本人である僕のための英語プラグインです。
これはEJDictという辞書を使う事を前提にしています。
だけど、同じ形式の辞書なら何でも良いと思います。
このプラグインは以下の機能を提供します。
- Ddcによる非同期自動補完
- 英和辞典
- 辞書のアップデート
- カスタム辞書
- なんちゃってシンタックスハイライト
あと、英語も併記しますね。
理由は辞書さえ用意できれば他の言語でも問題なく利用可能だからです。
ただし、英語である必要はあります。
- git
- deno
- denops
Denopsとdenoはインストールされていないといけません。
もちろん、vim-tinyのような制限付きvimでは動きません。
Gitは辞書をダウンロードするために必要です。
Vimplugの場合はこんな感じかと。
Plug 'uesseu/nin-english.vim'
Deinならこうです。
call dein#add('uesseu/nin-english.vim')
その上で、'g:nin_english#dict_dir'を設定する必要があります。
この変数は辞書のパスを指し示します。
この変数は自由でいいです。インストールの時にこのディレクトリに入れます。
let g:nin_english#dict_dir = '/home/[user]/.local/share/EJDict'
nin-englishをインストールするだけでは駄目です。
こいつはEJDict辞書なしには動くことが出来ません。
下記のコマンドでこのリポジトリの辞書をダウンロードできます。
https://github.com/kujirahand/EJDict
call InstallEJDict()
EJDictという素晴らしい辞書のおかげで動きます! この辞書はパブリックドメインです。 もし、手動で辞書をインストールしたければここからも出来るとは思います。
https://kujirahand.com/web-tools/EJDictFreeDL.php
けれども、このプラグインはgit経由を前提としています。
一旦設定例を示します。
" Hoverの設定
nnoremap <buffer> K :call NinCloseFloat()<CR>:call EnglishSearch()<CR>
" なんちゃってシンタックスハイライト
call NinEnglishHilight()
もしddcが入っているならば下記のように設定すれば自動で補完されます。
けれども、この設定は少し複雑です。
下記の例ではvim-lspとaroundも一緒に入れた例です。
g:nin_english#dict_pathをこの中に入れ込んで下さい。
call ddc#custom#patch_global('sources', ['vim-lsp', 'around', 'ninenglish'])
call ddc#custom#patch_global('sourceOptions', #{
\ _: #{
\ matchers: ['matcher_fuzzy'],
\ sorters: ['sorter_fuzzy'],
\ converters: ['converter_fuzzy']
\ },
\ around: #{ mark: 'Around'},
\ ninenglish: #{ mark: 'English'},
\ vim-lsp: #{
\ mark: 'LSP',
\ forceCompletionPattern: '\w+|\.\w*|:\w*|->\w*' },
\ })
call ddc#custom#patch_global('sourceParams', #{
\ ninenglish: #{dict_fname: 'g:nin_english#dict_dir'}})
カーソル上の単語を検索したいことはあるかも知れません。 この単語がカーソル上の単語を検索してくれます。
call EnglishSearch()
ただし、この関数はフロートウィンドウを閉じません。
閉じるためには'NinCloseFloat'という関数を呼ぶといいです。
だから、例えば'K'に単語検索の機能を割り当てたければ下記のようにします。
nnoremap <buffer> K :call NinCloseFloat()<CR>:call EnglishSearch()<CR>
辞書に色々追加することが出来ます。 例えば'a'という名前の辞書を作りたいならばこうします。
call EnglishCustomDictEdit('a')
書式はこんな感じです。
<word><tab><line1>/<line2>/<line3>/...
例えばこうです。
example 例/見本/見せしめ
もし、カスタム辞書のリストを表示したければ、下記のようにします。 If you want to show list of custom dictionaries, call bellow.
call EnglishCustomDictList()
もし、'a'という名前のカスタム辞書を削除したければ下記のようにします。 If you want to delete a custom dictionary named 'a', call bellow.
call EnglishCustomDictDelete('a')
ちなみに、カスタム辞書は辞書ディレクトリの中の 'src'の中に'custom-'という頭文字付きで保存されます。
英語のような自然言語にシンタックスハイライトを入れるのは容易ではありません。 遅くなりますし、プログラムを書くのもダルいです。 だから、なんちゃってシンタックスハイライトをつけました。 要らないかも?下記のコマンドでつけられます。
call NinEnglishHilight()
辞書の書式はカスタム辞書を編集する時には必要です。
EJDictはTSVの様な書式であって、下記のような感じです。
[word][tab][mean1/mean2/mean3/...]
もしかすると、これは互換性のある辞書があれば
外人さんにも有用かも知れないです。
MITライセンスにしておきます。 EJDictは内蔵していませんし、ライセンスも違うと思います。