牢獄機械文書群 目次 » 計算機 » 現在地
エスペラントの字上符(帽子)付きアルファベットを簡単に入力する
2013-08-20

Vim でエスペラントの帽子付きアルファベットを入力する方法はいくつかある。


  • ctrl-v u を使い、ユニコード(UTF-8)の文字コードで直接入力
  • キーマップで inoremap ^c ĉ などとする(文字2つのコンビネーションにする)
  • キーマップで q, w, x, y などのエス文で使わないアルファベットを ĉ, ŭ, ŝ, ĵ などの字上符付き文字に置き換える

  • ここでは、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! È Ĥ
    
    通常時 → エスペラント入力時
    x → ŝ
    X → Ŝ
    w → ŭ
    W → Ŭ
    y → ĵ
    Y → Ĵ
    q → ĉ
    Q → Ĉ
    ; → ĝ
    : → Ĝ
    < → ;
    > → :
    ← もどる
    inserted by FC2 system