MacVim で <C-^> による IME 制御が効いていないみたいなので、im-select を使って解決したよ、という話。
使うもの
- MacVim (Homebrew cask の “macvim”)
- im_control.vim
https://github.com/fuenor/im_control.vim - im-select
https://github.com/daipeihust/im-select
手順
- vim + im_control.vim をインストール
- im-select のインストール (/usr/local/bin/ に配置)
- .vimrc に以下のように書く
if (g:os == "Darwin") let IM_CtrlMode = 1 inoremap <silent> <C-j> <C-r>=IMState('FixMode')<CR> function! IMCtrl(cmd) let cmd = a:cmd if cmd == 'On' let res = system('im-select com.apple.inputmethod.Kotoeri.RomajiTyping.Japanese > /dev/null 2>&1') elseif cmd == 'Off' let res = system('im-select com.apple.keylayout.ABC > /dev/null 2>&1') elseif cmd == 'Toggle' " dummy let res = system('im-select > /dev/null 2>&1') endif return '' endfunction endif
IM_CtrlMode
を 1 にしているので、IMCtrl()
は ‘On’ か ‘Off’ を引数に呼ばれるので ‘Toggle’ は真面目に実装する必要はない。