CygwinのVIMで、コマンドモード復帰時にIMEをオフにする


経緯

過去に、いろいろな環境でVIMのコマンドモード復帰時にIMEをオフにする話題がありましたが、自分が使っているCygwin+VIMだと情報が乏しかったり、リンク切れだったりしたので、まとめなおしてみました。

必要なもの

以下のサイトを参考にしています。
Cygwin版VimでIME自動切り替えへの道 - 野望編

  1. minttyの置き換え
    以下のパッチをminttyのソースに当ててビルドする。といいたいところですが、パッチが古いのでいろいろ中身を解釈してマージして下さい。
    GitHubGist/kanonji/mintty-manage-ime.patch
    面倒な方は自分がビルドしたものをここに上げておきます。
    mintty.exeのzip書庫 (cygwin 64bit用)
    mintty.exeのzip書庫 (cygwin 32bit用)

  2. im_control.vim を ~/.vim/pluginにコピーする。

  3. ~/.vimrcに以下の設定を記述する

.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

以上です。

終わりに

atsuoishimotoさん、kanonjiさん、ありがとうございます。
おかげでめちゃ快適です。