Vim でエスペラントの帽子付きアルファベットを入力する方法はいくつかある。
ここでは、3番目の方法をとって「エスペラントのアルファベットのモード」を作る。
グローバル変数を使って「エスペラント入力モード」と「通常のアルファベットのモード」をトグルする。
以下の例では <M-Space> 打鍵でキーマップ変更の関数を呼ぶ。その際、どちらのモードにするかを g:ModoEsperanto の値の真偽で判定し、それから同変数の真偽をトグルする。エスペラントモードのときはカーソルの色を緑色にする。
(ほとんど使わない ĥ は、上述2番目の方法をとってキーマップで Meta(Alt)キーと文字キーとのコンビネーションにする。)
また、コマンドラインモードのときは、僕は、非アスキー文字を使いたくないケースがほとんどなので、ノーマルモードで「:」を打鍵した際にはエスペラント入力モードを自動的にオフにするようにした。ただしコマンドラインモードでも <M-Space> を打鍵すればエスペラント入力モードとトグルする。
let g:ModoEsperanto = 0 hi Kursoro guibg=#00dd00 "エスペラント入力モードのカーソルの色を指定 noremap! <expr> <M-Space> MetodoKomuto(g:ModoEsperanto) "入力モードのトグル noremap <expr> : CmdlineMetodoKomuto() "コマンドラインに入る際に入力モードを通常にする function! CmdlineMetodoKomuto() if g:ModoEsperanto == 1 call MetodoNormala() endif return ":" endfunction function! MetodoKomuto(elm) if a:elm == 0 call MetodoEsperanta() else call MetodoNormala() endif return "" endfunction function! MetodoEsperanta() let g:ModoEsperanto = 1 hi! link Cursor Kursoro noremap! x ŝ noremap! X Ŝ noremap! w ŭ noremap! W Ŭ noremap! y ĵ noremap! Y Ĵ noremap! q ĉ noremap! Q Ĉ noremap! ; ĝ noremap! : Ĝ noremap! < ; noremap! > : endfunction function! MetodoNormala() let g:ModoEsperanto = 0 hi! link Cursor NONE noremap! x x noremap! X X noremap! w w noremap! W W noremap! y y noremap! Y Y noremap! q q noremap! Q Q noremap! ; ; noremap! : : noremap! < < noremap! > > endfunction call MetodoEsperanta() noremap! è ĥ noremap! È Ĥ