前回の記事で述べたvim のpopup windowに表示されたテキストをyankするプラグインvim-popyankと、google翻訳をするプラグインtranslate.vimを使って便利な設定をしたのでメモ。

以下のようにvim-lsp経由の警告popup(もちろん他のpopupも)を翻訳することができる。

ptranslate

目的

vim-lspで表示されたpopup windowのテキストを簡単に翻訳する。(ついでに原文をyank。後でググるかもしれないので)

設定

vim-popyankにはpopup windowのテキストを取得する関数が含まれている。 仕組みとしては、それを使って取得したテキストをtranslate.vimに渡すだけだ。 vim-popyankとtranslate.vimがインストールされている状態で、.vimrcかどこかに以下の設定をする。

function! s:Ptranslate()
    call popyank#exec()
    let pop = popyank#pop()
    if len(pop) == 0
        echom "no popup window"
    endif
    exec 'Translate'. " ".pop
endfunction

command! -nargs=0 Ptranslate call s:Ptranslate()
nmap <leader>y :<C-u>Ptranslate<CR>

まず、popup window テキストの翻訳関数を定義している。

ここではまず、popyank#exec() でpopup windowテキストをyankしている。(あとでググったりする用)

その後、popyank#pop() でテキストを取得し、

exec 'Translate'. " ".popでtranslate.vimのコマンドTranslateに変数に入れたテキストを渡して翻訳する。

するとtranslate.vimが翻訳結果をpopup windowに表示してくれる。

この関数を実行するだけでもいいのだが、 最後の2行で<leader>y をタイプするだけで実行されるようにマッピングした。

これで思い立ったときにすぐpopupされたテキストを翻訳、yankできて便利。