🧘
Vim scriptでひらがな・カタカナ相互変換
Unicode内のひらがなとカタカナの五十音表は同じ順序で並んでいるので、両者の差分(0x60
)を足し引きすることで変換ができます。
function! HiraToKata(str) abort
return a:str->substitute('[ぁ-ゖ]',
\ '\=nr2char(char2nr(submatch(0), v:true) + 96, v:true)', 'g')
endfunction
function! KataToHira(str) abort
return a:str->substitute('[ァ-ヶ]',
\ '\=nr2char(char2nr(submatch(0), v:true) - 96, v:true)', 'g')
endfunction
echo HiraToKata('かわりみ人形')
" -> カワリミ人形
echo KataToHira('カワリミ人形')
" -> かわりみ人形
参考
Discussion