let g:mapping = {} let g:mapping["a"] = "αἀἁἂἃἄἅἆἇὰάᾀᾁᾂᾃᾄᾅᾆᾇᾰᾱᾲᾳᾴᾶᾷ" let g:mapping["b"] = "β" let g:mapping["c"] = "ψ" let g:mapping["d"] = "δ" let g:mapping["e"] = "εἐἑἒἓἔἕὲέ" let g:mapping["f"] = "φ" let g:mapping["g"] = "γ" let g:mapping["h"] = "ηἠἡἢἣἤἥἦἧὴήᾐᾑᾒᾓᾔᾕᾖᾗῂῃῄῆῇ" let g:mapping["i"] = "ιἰἱἲἳἴἵἶἷὶίῐῑῒΐῖῗ" let g:mapping["j"] = "ξ" let g:mapping["k"] = "κ" let g:mapping["l"] = "λ" let g:mapping["m"] = "μ" let g:mapping["n"] = "ν" let g:mapping["o"] = "οὀὁὂὃὄὅὸό" let g:mapping["p"] = "π" let g:mapping["r"] = "ρῥῤ" let g:mapping["s"] = "σς" let g:mapping["t"] = "τ" let g:mapping["u"] = "υὐὑὒὓὔὕὖὗὺύῠῡῢΰῦῧ" let g:mapping["w"] = "ωὠὡὢὣὤὥὦὧὼώᾠᾡᾢᾣᾤᾥᾦᾧῲῳῴῶῷ" let g:mapping["x"] = "χ" let g:mapping["y"] = "θ" let g:mapping["z"] = "ζ" let g:mapping["A"] = "ΑἈἉἊἋἌἍἎἏᾺΆᾈᾉᾊᾋᾌᾍᾎᾏᾸᾹᾼ" let g:mapping["B"] = "Β" let g:mapping["C"] = "Ψ" let g:mapping["D"] = "Δ" let g:mapping["E"] = "ΕἘἙἚἛἜἝῈΈ" let g:mapping["F"] = "Φ" let g:mapping["G"] = "Γ" let g:mapping["H"] = "ΗἨἩἪἫἬἭἮἯῊΉᾘᾙᾚᾛᾜᾝᾞᾟῌ" let g:mapping["I"] = "ΙἸἹἺἻἼἽἾἿῚΊῘῙ" let g:mapping["J"] = "Ξ" let g:mapping["K"] = "Κ" let g:mapping["L"] = "Λ" let g:mapping["M"] = "Μ" let g:mapping["N"] = "Ν" let g:mapping["O"] = "ΟὈὉὊὋὌὍῸΌ" let g:mapping["P"] = "Π" let g:mapping["R"] = "ΡῬ" let g:mapping["S"] = "ΣΣ" let g:mapping["T"] = "Τ" let g:mapping["U"] = "ΥὙὛὝὟῪΎῨῩ" let g:mapping["W"] = "ΩὨὩὪὫὬὭὮὯῺΏᾨᾩᾪᾫᾬᾭᾮᾯῼ" let g:mapping["X"] = "Χ" let g:mapping["Y"] = "Θ" let g:mapping["Z"] = "Ζ" " let g:mapping["q"] = "" " let g:mapping["v"] = "" fun! CSelect(char) if a:char == "q" inoremap else let zahlen = "1234567890123456789012345678901234567890" let l = strlen(substitute(g:mapping[a:char],".","x","g")) let zahlen = strpart(zahlen, 0, l) let z = input(zahlen . "\n" . g:mapping[a:char] . "\n") let tmp = g:mapping[a:char] while z > 1 let tmp = substitute(tmp,".","","") let z = z - 1 endwhile let tmp = substitute(tmp,"\\(.\\).*","\\1","") exec "normal a" . tmp . "\" endif endfun fun! Greek() for key in keys(g:mapping) if strlen(substitute(g:mapping[key],".","x","g")) > 1 exec "inoremap " . key . " " . ":call CSelect(\"" . key . "\")" else exec "inoremap " . key . " " . g:mapping[key] endif endfor inoremap q :call CSelect("q") endfun fun! UnGreek() for key in keys(g:mapping) exec "iunmap " . key endfor iunmap q endfun command! -nargs=0 Greek call Greek() command! -nargs=0 UnGreek call UnGreek()