NeovimのFloating Windowで翻訳する ~ vim-translate-me ~


はじめに

まだVimを使い始めて1年足らずですが、プラギンを一人でシコシコ探して設定しているとなんとなくもったいない気がしてきますね。
なのであまりインターネッツに情報がないプラグインとかについてこういうところでアウトプットします。

Floating Windowで翻訳する

Floating Windowは最近Neovimに追加された要素で、Vimにもともとあった画面分割ウィンドウと一線を画す、「浮いている」ウィンドウが作れます。
画面を分割するまでもないちょっとした情報を表示するにはうってつけの機能。

このFloating Window活用した翻訳プラグインの1つが、voldikss氏作成のvim-translate-me
作者は中国人の方のようでデフォルトの設定やReadMeが中国語ですが、日本語でもしっかり使えます。

vim-tlanslate-me

# dein.nvim
[[plugins]]
repo = 'voldikss/vim-translate-me'

Requirement

あたりまえですがFloating Windowが実装されたバージョン (v0.4) 以降のNeovimを使いましょう。
安定版にもすでに実装されています。
Pythonで記述されているのでNeovimにPythonのパスが通っていることも必要です。

設定

デフォルトの設定では引数を与えないと中国語に翻訳してしまいます。
ついでに翻訳エンジンもGoogleのものに変えましょう。

let g:vtm_target_lang = 'ja'
let g:vtm_default_engines = ['google']

つかいかた

:TransrateWコマンドを翻訳したい文字列の上で実行すると……

こんな感じに。
見た目もなかなかクールでよいですね。

翻訳は非同期に行ってくれるんですが、Floatingで表示させるとウィンドウがカーソル移動で消えてしまうので結局じっと待つことになります。
翻訳中にほかごとがしたい人は:Translateコマンドを使えば結果をコマンドラインに吐き出してくれるので幸せになれるでしょう。

デフォルトではこのようなマッピングになっています。
適当に変えて使いましょう。

  nmap <silent> <Leader>t <Plug>Translate
  vmap <silent> <Leader>t <Plug>TranslateV

  nmap <silent> <Leader>w <Plug>TranslateW
  vmap <silent> <Leader>w <Plug>TranslateWV
  " 翻訳結果で置換
  nmap <silent> <Leader>r <Plug>TranslateR
  vmap <silent> <Leader>r <Plug>TranslateRV

マッピングからはVisualモードで選択した文章全体を翻訳することもできます。
改行やタグが混じると結果が崩れてしまうので工夫しなければいけませんが、あるとないとでは大違いです。

おわりに

私は試してないですが、VimでもPopup Windowを使って同様に機能するそうです。よかったですね。