この記事は Vim Advent Calender 2013 119日目の記事です。
経緯
きっかけは、たまたま見た、このツイートでした。
https://twitter.com/upgrade_ayp/status/449036965619310592
javascript:K='あいうえおやゆよわつは。';k='ぁぃぅぇぉゃゅょゎっゎo';with(document.body){for(i in K){innerHTML=innerHTML.replace(RegExp(K[i],'g'),k[i])}}focus();
翻訳とかならともかく、そんな変換しようと思ったこともないけど、
何か不思議に「ほぅ…」って思ってしまい、「この発想で何か作ろう」と思いました。
で、まんまなものを作ってしまったのですが、
これが 初の自作Vimプラグインです。
現在の行をギャル文字に変換します!
:ConvertGalChar
とやると、現在行の文字列変換を行います。
プラグインが出来るまで
Vim プラグインを github で公開するまでや、
Vimプラグインが出来るまで - ぼっち勉強会を見ながら、.vimrc
にちまちま書いては怒られ書いては怒られ、
autoload
って何だ…と今も思いつつ、
もっと良ぃ実装無ぃのかな…とか、変数名とかのぉ作法もょく分からずゃってぃますo
実質のコードは下記のみですね。
function! s:GalChar()
let before_gal_character = ["あ", "い", "う", "え", "お", "や", "ゆ", "よ", "わ", "つ", "は", "。"]
let after_gal_character = ["ぁ", "ぃ", "ぅ", "ぇ", "ぉ", "ゃ", "ゅ", "ょ", "ゎ", "っ", "ゎ", "o"]
let current_line = getline('.')
let c = 0
while c < len(before_gal_character)
let current_line = substitute(current_line, before_gal_character[c], after_gal_character[c], "g")
let c += 1
endwhile
call setline('.', current_line)
endfunction
もしもっと作りこむなら、現在の行だけではなく、
選択された textobj
とか ビジュアルモードの選択にも対応してみたいです。
TravisCI
111日目のVAC、 vim-vimlint で Travis-CI 連携も使ってみました!
最後に
作り終わる直前に、osyo-mangaさんの言葉が脳裏に浮かび、
「既存のプラグイン名と被らないようにする」
検索してみたところ、
Vimでギャル文字
もぅぁるゃんo
mattnさんが2012年に作ってたょooo
gal-vim
だから名前は被ってないけど…