Created
July 12, 2021 14:04
-
-
Save kuuote/46e5596b8c89db90d1ed993949e92156 to your computer and use it in GitHub Desktop.
Vimでかな入力するやつ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function! kana#init() abort | |
let s:state = {} | |
let s:state.preedit = "" | |
let s:state.preedit_next = "" | |
let s:state.kakutei = v:false | |
let s:state.feed = "" | |
let s:table = json_decode(join(readfile("table.json"), "")) | |
call kana#map() | |
endfunction | |
function! kana#map() abort | |
for i in range(26) | |
let c = nr2char(i + 0x61) | |
execute printf("lnoremap <expr> %s kana#input('%s')", c, c) | |
endfor | |
lnoremap <expr> ' kana#input("'") | |
lnoremap <expr> - kana#input("-") | |
endfunction | |
function! kana#preedit() abort | |
let ret = repeat("\<C-h>", strchars(s:state.preedit)) .. s:state.preedit_next | |
if s:state.kakutei | |
let s:state.preedit = "" | |
let s:state.kakutei = v:false | |
else | |
let s:state.preedit = s:state.preedit_next | |
endif | |
let s:state.preedit_next = "" | |
return ret | |
endfunction | |
function! kana#kakutei(result, feed) abort | |
let s:state.kakutei = v:true | |
let s:state.preedit_next = a:result | |
let s:state.feed = a:feed | |
endfunction | |
function! kana#input(char) abort | |
" んじゃ等を処理するために確保 | |
let current = get(s:table, s:state.feed, v:false) | |
let s:state.feed ..= a:char | |
let found = filter(items(s:table), "stridx(v:val[0], s:state.feed) == 0") | |
if empty(found) | |
if current isnot v:false | |
call kana#kakutei(current[2], a:char) | |
else | |
let s:state.feed = a:char | |
let s:state.preedit_next = a:char | |
endif | |
elseif len(found) == 1 && found[0][0] ==# s:state.feed | |
echo found | |
call kana#kakutei(found[0][1][2], found[0][1][0]) | |
else | |
let s:state.preedit_next = s:state.feed | |
endif | |
return kana#preedit() | |
endfunction | |
augroup kana | |
autocmd! | |
autocmd InsertEnter * call kana#init() | |
augroup END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"a": ["", "ア", "あ"], | |
"-": ["", "", "ー"], | |
"bb": ["b", "ッ", "っ"], | |
"ba": ["", "バ", "ば"], | |
"be": ["", "ベ", "べ"], | |
"bi": ["", "ビ", "び"], | |
"bo": ["", "ボ", "ぼ"], | |
"bu": ["", "ブ", "ぶ"], | |
"bya": ["", "ビャ", "びゃ"], | |
"bye": ["", "ビェ", "びぇ"], | |
"byi": ["", "ビィ", "びぃ"], | |
"byo": ["", "ビョ", "びょ"], | |
"byu": ["", "ビュ", "びゅ"], | |
"cc": ["c", "ッ", "っ"], | |
"cha": ["", "チャ", "ちゃ"], | |
"che": ["", "チェ", "ちぇ"], | |
"chi": ["", "チ", "ち"], | |
"cho": ["", "チョ", "ちょ"], | |
"chu": ["", "チュ", "ちゅ"], | |
"cya": ["", "チャ", "ちゃ"], | |
"cye": ["", "チェ", "ちぇ"], | |
"cyi": ["", "チィ", "ちぃ"], | |
"cyo": ["", "チョ", "ちょ"], | |
"cyu": ["", "チュ", "ちゅ"], | |
"dd": ["d", "ッ", "っ"], | |
"da": ["", "ダ", "だ"], | |
"de": ["", "デ", "で"], | |
"dha": ["", "デャ", "でゃ"], | |
"dhe": ["", "デェ", "でぇ"], | |
"dhi": ["", "ディ", "でぃ"], | |
"dho": ["", "デョ", "でょ"], | |
"dhu": ["", "デュ", "でゅ"], | |
"di": ["", "ヂ", "ぢ"], | |
"do": ["", "ド", "ど"], | |
"du": ["", "ヅ", "づ"], | |
"dya": ["", "ヂャ", "ぢゃ"], | |
"dye": ["", "ヂェ", "ぢぇ"], | |
"dyi": ["", "ヂィ", "ぢぃ"], | |
"dyo": ["", "ヂョ", "ぢょ"], | |
"dyu": ["", "ヂュ", "ぢゅ"], | |
"e": ["", "エ", "え"], | |
"ff": ["f", "ッ", "っ"], | |
"fa": ["", "ファ", "ふぁ"], | |
"fe": ["", "フェ", "ふぇ"], | |
"fi": ["", "フィ", "ふぃ"], | |
"fo": ["", "フォ", "ふぉ"], | |
"fu": ["", "フ", "ふ"], | |
"fya": ["", "フャ", "ふゃ"], | |
"fye": ["", "フェ", "ふぇ"], | |
"fyi": ["", "フィ", "ふぃ"], | |
"fyo": ["", "フョ", "ふょ"], | |
"fyu": ["", "フュ", "ふゅ"], | |
"gg": ["g", "ッ", "っ"], | |
"ga": ["", "ガ", "が"], | |
"ge": ["", "ゲ", "げ"], | |
"gi": ["", "ギ", "ぎ"], | |
"go": ["", "ゴ", "ご"], | |
"gu": ["", "グ", "ぐ"], | |
"gya": ["", "ギャ", "ぎゃ"], | |
"gye": ["", "ギェ", "ぎぇ"], | |
"gyi": ["", "ギィ", "ぎぃ"], | |
"gyo": ["", "ギョ", "ぎょ"], | |
"gyu": ["", "ギュ", "ぎゅ"], | |
"ha": ["", "ハ", "は"], | |
"he": ["", "ヘ", "へ"], | |
"hi": ["", "ヒ", "ひ"], | |
"ho": ["", "ホ", "ほ"], | |
"hu": ["", "フ", "ふ"], | |
"hya": ["", "ヒャ", "ひゃ"], | |
"hye": ["", "ヒェ", "ひぇ"], | |
"hyi": ["", "ヒィ", "ひぃ"], | |
"hyo": ["", "ヒョ", "ひょ"], | |
"hyu": ["", "ヒュ", "ひゅ"], | |
"i": ["", "イ", "い"], | |
"jj": ["j", "ッ", "っ"], | |
"ja": ["", "ジャ", "じゃ"], | |
"je": ["", "ジェ", "じぇ"], | |
"ji": ["", "ジ", "じ"], | |
"jo": ["", "ジョ", "じょ"], | |
"ju": ["", "ジュ", "じゅ"], | |
"jya": ["", "ジャ", "じゃ"], | |
"jye": ["", "ジェ", "じぇ"], | |
"jyi": ["", "ジィ", "じぃ"], | |
"jyo": ["", "ジョ", "じょ"], | |
"jyu": ["", "ジュ", "じゅ"], | |
"kk": ["k", "ッ", "っ"], | |
"ka": ["", "カ", "か"], | |
"ke": ["", "ケ", "け"], | |
"ki": ["", "キ", "き"], | |
"ko": ["", "コ", "こ"], | |
"ku": ["", "ク", "く"], | |
"kya": ["", "キャ", "きゃ"], | |
"kye": ["", "キェ", "きぇ"], | |
"kyi": ["", "キィ", "きぃ"], | |
"kyo": ["", "キョ", "きょ"], | |
"kyu": ["", "キュ", "きゅ"], | |
"ma": ["", "マ", "ま"], | |
"me": ["", "メ", "め"], | |
"mi": ["", "ミ", "み"], | |
"mo": ["", "モ", "も"], | |
"mu": ["", "ム", "む"], | |
"mya": ["", "ミャ", "みゃ"], | |
"mye": ["", "ミェ", "みぇ"], | |
"myi": ["", "ミィ", "みぃ"], | |
"myo": ["", "ミョ", "みょ"], | |
"myu": ["", "ミュ", "みゅ"], | |
"n": ["", "ン", "ん"], | |
"n'": ["", "ン", "ん"], | |
"na": ["", "ナ", "な"], | |
"ne": ["", "ネ", "ね"], | |
"ni": ["", "ニ", "に"], | |
"nn": ["", "ン", "ん"], | |
"no": ["", "ノ", "の"], | |
"nu": ["", "ヌ", "ぬ"], | |
"nya": ["", "ニャ", "にゃ"], | |
"nye": ["", "ニェ", "にぇ"], | |
"nyi": ["", "ニィ", "にぃ"], | |
"nyo": ["", "ニョ", "にょ"], | |
"nyu": ["", "ニュ", "にゅ"], | |
"o": ["", "オ", "お"], | |
"pp": ["p", "ッ", "っ"], | |
"pa": ["", "パ", "ぱ"], | |
"pe": ["", "ペ", "ぺ"], | |
"pi": ["", "ピ", "ぴ"], | |
"po": ["", "ポ", "ぽ"], | |
"pu": ["", "プ", "ぷ"], | |
"pya": ["", "ピャ", "ぴゃ"], | |
"pye": ["", "ピェ", "ぴぇ"], | |
"pyi": ["", "ピィ", "ぴぃ"], | |
"pyo": ["", "ピョ", "ぴょ"], | |
"pyu": ["", "ピュ", "ぴゅ"], | |
"rr": ["r", "ッ", "っ"], | |
"ra": ["", "ラ", "ら"], | |
"re": ["", "レ", "れ"], | |
"ri": ["", "リ", "り"], | |
"ro": ["", "ロ", "ろ"], | |
"ru": ["", "ル", "る"], | |
"rya": ["", "リャ", "りゃ"], | |
"rye": ["", "リェ", "りぇ"], | |
"ryi": ["", "リィ", "りぃ"], | |
"ryo": ["", "リョ", "りょ"], | |
"ryu": ["", "リュ", "りゅ"], | |
"ss": ["s", "ッ", "っ"], | |
"sa": ["", "サ", "さ"], | |
"se": ["", "セ", "せ"], | |
"sha": ["", "シャ", "しゃ"], | |
"she": ["", "シェ", "しぇ"], | |
"shi": ["", "シ", "し"], | |
"sho": ["", "ショ", "しょ"], | |
"shu": ["", "シュ", "しゅ"], | |
"si": ["", "シ", "し"], | |
"so": ["", "ソ", "そ"], | |
"su": ["", "ス", "す"], | |
"sya": ["", "シャ", "しゃ"], | |
"sye": ["", "シェ", "しぇ"], | |
"syi": ["", "シィ", "しぃ"], | |
"syo": ["", "ショ", "しょ"], | |
"syu": ["", "シュ", "しゅ"], | |
"tt": ["t", "ッ", "っ"], | |
"ta": ["", "タ", "た"], | |
"te": ["", "テ", "て"], | |
"tha": ["", "テァ", "てぁ"], | |
"the": ["", "テェ", "てぇ"], | |
"thi": ["", "ティ", "てぃ"], | |
"tho": ["", "テョ", "てょ"], | |
"thu": ["", "テュ", "てゅ"], | |
"ti": ["", "チ", "ち"], | |
"to": ["", "ト", "と"], | |
"tsu": ["", "ツ", "つ"], | |
"tu": ["", "ツ", "つ"], | |
"tya": ["", "チャ", "ちゃ"], | |
"tye": ["", "チェ", "ちぇ"], | |
"tyi": ["", "チィ", "ちぃ"], | |
"tyo": ["", "チョ", "ちょ"], | |
"tyu": ["", "チュ", "ちゅ"], | |
"u": ["", "ウ", "う"], | |
"vv": ["v", "ッ", "っ"], | |
"va": ["", "ヴァ", "う゛ぁ"], | |
"ve": ["", "ヴェ", "う゛ぇ"], | |
"vi": ["", "ヴィ", "う゛ぃ"], | |
"vo": ["", "ヴォ", "う゛ぉ"], | |
"vu": ["", "ヴ", "う゛"], | |
"ww": ["w", "ッ", "っ"], | |
"wa": ["", "ワ", "わ"], | |
"we": ["", "ウェ", "うぇ"], | |
"wi": ["", "ウィ", "うぃ"], | |
"wo": ["", "ヲ", "を"], | |
"wu": ["", "ウ", "う"], | |
"xx": ["x", "ッ", "っ"], | |
"xa": ["", "ァ", "ぁ"], | |
"xe": ["", "ェ", "ぇ"], | |
"xi": ["", "ィ", "ぃ"], | |
"xka": ["", "ヵ", "か"], | |
"xke": ["", "ヶ", "け"], | |
"xo": ["", "ォ", "ぉ"], | |
"xtsu": ["", "ッ", "っ"], | |
"xtu": ["", "ッ", "っ"], | |
"xu": ["", "ゥ", "ぅ"], | |
"xwa": ["", "ヮ", "ゎ"], | |
"xwe": ["", "ヱ", "ゑ"], | |
"xwi": ["", "ヰ", "ゐ"], | |
"xya": ["", "ャ", "ゃ"], | |
"xyo": ["", "ョ", "ょ"], | |
"xyu": ["", "ュ", "ゅ"], | |
"yy": ["y", "ッ", "っ"], | |
"ya": ["", "ヤ", "や"], | |
"ye": ["", "イェ", "いぇ"], | |
"yo": ["", "ヨ", "よ"], | |
"yu": ["", "ユ", "ゆ"], | |
"zz": ["z", "ッ", "っ"], | |
"z ": ["", "", " "], | |
"z*": ["", "", "※"], | |
"z,": ["", "", "‥"], | |
"z-": ["", "", "〜"], | |
"z.": ["", "", "…"], | |
"z/": ["", "", "・"], | |
"z0": ["", "", "○"], | |
"z@": ["", "", "◎"], | |
"z[": ["", "", "『"], | |
"z]": ["", "", "』"], | |
"z{": ["", "", "【"], | |
"z}": ["", "", "】"], | |
"z(": ["", "", "("], | |
"z)": ["", "", ")"], | |
"za": ["", "ザ", "ざ"], | |
"ze": ["", "ゼ", "ぜ"], | |
"zh": ["", "", "←"], | |
"zi": ["", "ジ", "じ"], | |
"zj": ["", "", "↓"], | |
"zk": ["", "", "↑"], | |
"zl": ["", "", "→"], | |
"zL": ["", "", "⇒"], | |
"zn": ["", "", "ー"], | |
"zo": ["", "ゾ", "ぞ"], | |
"zu": ["", "ズ", "ず"], | |
"zya": ["", "ジャ", "じゃ"], | |
"zye": ["", "ジェ", "じぇ"], | |
"zyi": ["", "ジィ", "じぃ"], | |
"zyo": ["", "ジョ", "じょ"], | |
"zyu": ["", "ジュ", "じゅ"], | |
":": ["", "", ":"], | |
";": ["", "", ";"], | |
"?": ["", "", "?"], | |
"[": ["", "", "「"], | |
"]": ["", "", "」"] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment