Created
July 12, 2021 14:04
-
-
Save kuuote/46e5596b8c89db90d1ed993949e92156 to your computer and use it in GitHub Desktop.
Vimでかな入力するやつ
This file contains hidden or 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 hidden or 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