🧘

Vim scriptでひらがな・カタカナ相互変換

2023/11/19に公開

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('カワリミ人形')
" -> かわりみ人形

参考

https://qiita.com/mimoe/items/855c112625d39b066c9a

Discussion