Vimで強制的にIMをオフにする @Ubuntu

http://idak604.blog39.fc2.com/blog-entry-2.html


uimにあるvi協調モード.
Insert modeからNormal modeに戻るときに強制的にIMEをオフにしてくれる.
uim入れてみたけど使い勝手が微妙だったから削除(vi協調モードは動作した).
Ubuntu標準のSCIMにこの機能はついていない.


これをvim側で対処する.
手順は3つ

1. xvkbdをインストール

# apt-get install xvkbd


2. SCIMIME終了のホットキーを作成
今回は,Ctrl + Shift + Spaceを使用
自分で打つことはないだろうから適当でOK
SCIMを設定 -> フロントエンド -> 全体設定 -> ホットキー -> 終了
で設定可能


3. .vimrcに記述
が押されたらシステムにCtrl + Shift + Spaceを送ってる感じ

inoremap <silent> <esc> <esc>:call ForceImeOff()<cr>
inoremap <silent> <C-[> <esc>:call ForceImeOff()<cr>
function! ForceImeOff()
	let imeoff = system('xvkbd -text "\[Control]\[Shift]\[space]" > /dev/null 2>&1')
endfunction


以上.


本当は

noremap!

にしたかったけど,Command modeでエラーが出る(なんで?)から断念.

cnoremap <silent> <cr> <cr>:call ForceImeOff()<cr>

とかしてもいいかも.(中止)


追記(09/02/08)


  • IME->IM.
    違いはよく分からない・・・

  • Command modeへのremapは置換などのときに困るので中止.
    検索(/ or ?)の時だけ反応するようにしたい.
    いい方法無いかなぁ・・・

  • ちょっと説明追加.

  • なんかgVimの調子がおかしい.
    調査中.

  • VIM-LATEXと少々相性が悪いよう.
    一度vim上で.texファイルをコンパイルすると説明しづらバグりかたをする