translategoogle.vimの翻訳結果をクリップボードへ入れる

翻訳結果は使いたい

私のような英語がスラスラ読めない人は vimgoogle翻訳 する。
google 翻訳機能を持った plugin の中で自分は daisuzu/translategoogle.vim を使用しています。

このプラグイン非常にシンプルで使いやすい。

vimコマンドラインから翻訳ができる機能もあり、単語を調べたいときには重宝する。

:TranslateGoogleCmd japan

しかし、これは翻訳結果を echo するだけなので、yank できない。
yankするとすれば、マウスで echo 結果をドラッグしないといけない(すごくめんどくさい)

翻訳結果を vimクリップボード に入れるコマンドを登録する

この問題の打開策として.vimrcにユーザ定義コマンドを追加します。

command! -nargs=*
            \ TranslateGoogleCmdYank redi @+ | echon translategoogle#command(<q-args>) | redi END
command! -nargs=*
            \ TranslateGoogleCmdReverseYank redi @+ | echon translategoogle#command_reverse(<q-args>) | redi END

コマンドの実行方法はTranslateGoogleCmdと全く同じ。

:TranslateGoogleCmdYank japan

ステータスラインに表示される実行結果も:TranslateGoogleCmdと同じですが、
putできるようになっています。

コマンドをより便利に使うキーマップ

コマンドを毎回打つのも非効率的なので、私は以下のようなキーマップを使っています。
それぞれ、.vimrcに追加すればいいだけ。

nnoremap tj yiw:TranslateGoogleCmdYank <C-R>"<CR>
nnoremap tr yiw:TranslateGoogleCmdReverseYank <C-R>"<CR>
  • tja押下で、カーソル下の単語の翻訳結果を、append する
nnoremap tja yiw:TranslateGoogleCmdYank <C-R>"<CR>ea<Space><C-R>+<ESC>
nnoremap tra yiw:TranslateGoogleCmdReverseYank <C-R>"<CR>ea<Space><C-R>+<ESC>

補足

TranslateGoogleCmdYank で使用しているrediについては:help redirを参照
また、:help redirだけでは使い方わからないんじゃ!(怒)という人は
こちらのサイトが非常にわかりやすかったです。