先日「Google 日本語入力 - CGI API」が公開されましたね。
Google 日本語入力 - CGI API デベロッパーガイド
Google CGI API for Japanese Input Google CGI API for Japanese Input は、日本語変換をインターネット上で実現するための、CGI サービ...
http://www.google.com/intl/ja/ime/cgiapi.html
こんなの migemo の為にあるみたいなもんじゃないですか!
さっそく作りました。
File:
Author:
Last Change:08-Oct-2010.
Version:
WebPage:
Usage:
"ココでは着物を脱ぐ"
"此処で履物を脱ぐ"
Require:
if exists("loaded_gmigemo") || v:version < 700
finish
endif
let loaded_gmigemo = 1
function! s:nr2byte(nr)
if a:nr < 0x80
return nr2char(a:nr)
elseif a:nr < 0x800
return nr2char(a:nr/64+192).nr2char(a:nr%64+128)
else
return nr2char(a:nr/4096%16+224).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)
endif
endfunction
function! s:nr2enc_char(charcode)
if &encoding == 'utf-8'
return nr2char(a:charcode)
endif
let char = s:nr2byte(a:charcode)
if strlen(char) > 1
let char = strtrans(iconv(char, 'utf-8', &encoding))
endif
return char
endfunction
function! g:GoogleMigemo(word)
let word = substitute(a:word, '\s', ',', 'g')
let url = "http://www.google.com/transliterate"
let res = http#get(url, { "langpair": "ja-Hira|ja", "text": word }, {})
let str = iconv(res.content, "utf-8", &encoding)
let str = substitute(str, '\\u\(\x\x\x\x\)', '\=s:nr2enc_char("0x".submatch(1))', 'g')
let str = substitute(str, "\n", "", "g")
let g:hoge = str
let arr = eval(str)
let mx = ''
for m in arr
call map(m[1], 'substitute(v:val,"\\\\", "\\\\\\\\", "g")')
let mx .= '\('.join(m[1], '\|').'\)'
endfor
return mx
endfunction
function! s:GoogleMigemo(word)
if executable('curl') == 0
echohl ErrorMsg
echo 'GoogleMigemo: curl is not installed'
echohl None
return
endif
let word = a:word != '' ? a:word : input('GoogleMigemo:')
if word == ''
return
endif
let mx = g:GoogleMigemo(word)
let @/ = mx
let v:errmsg = ''
silent! normal n
if v:errmsg != ''
echohl ErrorMsg
echo v:errmsg
echohl None
endif
endfunction
command! -nargs=* GoogleMigemo :call <SID>GoogleMigemo(<q-args>)
nnoremap <silent> <leader>mg :call <SID>GoogleMigemo('')<cr>
いつも1ファイルで動くものを提供してきましたが、そろそろvimもライブラリとアプリケーションを分けないとvimの今後があやぶまれるな...(vimjoltsってなんだっけ汗)...と思ったので、今回は手前味噌ですが「webapi-vim」というのを使っています。
mattn's webapi-vim at master - GitHub
webapi-vim: vim interface to Web APIDescription:Require: curl command : http://curl.haxx.se/Thanks T...
http://github.com/mattn/webapi-vim
先日 vim-oauth で使った奴ですね。
まぁ単体にしたい人は書き換えて下さい。
使い方は簡単。
:GogoleMigemo ここではきものをぬぐ
とすると、「ココで履物を脱ぐ」がマッチします。なお、「ここでは着物を脱ぐ」が検索したかったよ...という全国2000万人のエロいオッサン達。慌てないで。
:GogoleMigemo ここでは きものを ぬぐ
とスペースを入れると認識してくれ、ちゃんと「此処では着物を脱ぐ」にマッチします。もちろん「ここで はきものを ぬぐ」とすれば「此処で履物を脱ぐ」や「個々で履物を脱ぐ」にマッチしたりもします。
<leader>mg にキーマップしてあります。あと、グローバル関数「GoogleMigemo」も提供してあるので「let foo = GoogleMigemo(xxx)」な使い方も出来ます。
それなりに便利かもしれません。もちろんネットに繋がってないと使えませんし、エロい語句を検索すると、Google先生にネタを送ってしまいます。
ご利用は計画的に。