Vimのpopup windowに表示されたテキストを翻訳して表示する
前回の記事で述べたvim のpopup windowに表示されたテキストをyankするプラグインvim-popyankと、google翻訳をするプラグインtranslate.vimを使って便利な設定をしたのでメモ。
以下のようにvim-lsp経由の警告popup(もちろん他のpopupも)を翻訳することができる。
目的
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できて便利。
もし何か質問やフィードバックがありましたら、 @biosugar0 までお願いします。
2020-07-14