Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimが喋った

$
0
0

ども、Vimゴリラです。

はじめに

以前、Vimの翻訳プラグインtranslate.vimを作ってからブラウザで翻訳する機会がほとんど無くなりました。
普段は日本語と英語を交互で翻訳することが多く、ふと英語の発音をVimで聞けたらいいなぁと思い、5分くらいでぱぱっと作りました。

どんな感じ?

こんな感じです。Qiitaは動画を載せられ無いのでツイートの方で見て頂ければと思います。
https://twitter.com/gorilla0513/status/1180480069371719680?s=20

導入

READMEを参照してください。

1点注意ですが、このプラグインは内部でsayコマンドを使用していて、このコマンドはMacOSにしかないため、Mac以外はこのプラグインを使えないです。

使い方

とても簡単です。:Sayを実行するだけです。
もちろん選択したテキストを翻訳することもできます。

また:Say "my name is gorilla"といった感じで引数を渡すことで、
引数のテキストを読み上げてくれます。

ボイスの変更

vimrcに次のように設定を書くことで変更できます。

letg:say_voice='Kyoko'

デフォルトのボイスは英語のAlexになっています。sayで使用できる言語は日本語や中国語、韓国語などがあります。
詳しくはREADMEを参照してください。

仕組み

Vimでsayコマンドを非同期で実行しているだけです。
メインの処理はたったこれだけ。

function! say#say(start,end,...) abort
    let text =join(getline(a:start,a:end),"\n")ifa:0!=0let text =a:1endiflet voice = get(g:,'say_voice','Alex')let cmd =['say','-v', voice, text]call job_start(cmd,{                \'err_cb':function('s:err_cb'),                \})endfunction

getlineを使用して、選択した範囲のテキストを取得しています。
そして引数がある場合は、引数を優先するようにしています。

job_startsayコマンドを非同期で実行させています。
とても簡単ですね。

最後に

ぱぱっと作ったので、何か便利な機能を思いついたら改良していきたいと考えています。
欲を言えば他のOSでもテキストを読み上げる方法があれば、インターフェイスをきちんと固めて対応したいと考えています。

もしこの方法で実現できるといった情報があればぜひコメントを頂けると助かります。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>