このBlogは移転しました。今後は aish.dev を御覧ください。

Cygwin版VimでIME自動切り替えへの道 - 野望編

さて、ようやく Cygwin版VimでIME自動切り替えへの道 - 立志編 の続きである。

minttyの置き換え

まず、Cygwin版VimでIME自動切り替えへの道 - 立志編にあるパッチを当てた mintty.exe をビルドする。とりあえず、私の方でビルドしたバイナリを

http://www.gembook.org/download/mintty.exe

に置いておいたのでお試し頂きたい。

vimの設定

Vim/GVimで「日本語入力固定モード」を使用する を参考に、vimの設定を行う。

  1. im_control.vim を ~/.vim/pluginにコピーする。
  2. ~/.vimrcに以下の設定を記述する
function! IMCtrl(cmd)
  let cmd = a:cmd
  if cmd == 'On'
    silent !echo -n -e "\0033[1v"
    redraw!
  elseif cmd == 'Off'
    silent !echo -n -e "\0033[0v"
    redraw!
  elseif cmd == 'Toggle'
    silent !echo -n -e "\0033[2v"
    redraw!
  endif
  return ''
endfunction

コマンドプロンプトの設定

コマンドプロンプトで、行頭からいきなり日本語を入力することはあまりないものだ。ということで、bash等のプロンプトにIMEオフのエスケープシーケンスを仕込んで、改行直後はかならず英数字を入力できるようにしてみよう。

  1. .bashrc等を編集し、PS1等の文字列に
 \[\e[0v\]

という文字列を追加する。 Cygwinのデフォルト設定だと、こんな感じになる

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$\[\e[0v\]'

これで、IMEオンの状態で改行すればIMEがオフになるはずだ。