やりたいことは、シンプルで、Vimのノーマルモード移行時にIMEをオフにするというものです。これには、ノーマルモード移行キーとIMEをオフにするキーを組み合わせます。
私の場合は、C-j
でノーマルモードに移行しますので、好みの問題ですが、これは適時読み替えてください。ちなみに、今回採用する方法は、Vimの設定は基本不要になります。
imap <C-j> <ESC>
BetterTouchToolを使った方法
BetterTouchToolというアプリを使うのですが、これはショートカットキー、タッチパッドなどを設定するアプリです。個人的にはこのアプリに頼りたくないのですが、既存の方法が全滅でしたので、とりあえずこのアプリで設定しました。誰か、シンプルな方法を知っていたら、ぜひ教えて下さい。
図にするとこんなかんじでキーを設定します。Select Application
はGlobalでも良いし、Terminalを指定してもよいです。ここで、Ctrl+J
には、Attach Additional Action
を設定することも忘れずに。
Ctrl+J ---> Ctrl+Shift+;|
---> Ctrl+[
解説ですが、私の場合は、Google IME
を使用していて、英数に切り替えるショートカットキーがCtrl+Shift+;
なのです。
ちなみに、これは独自に設定できます。例えば、以下の設定などが便利ですね。
これをしておくと、ターミナルを除くほとんどのアプリでC-J
を押すと、IMEをオフに出来ます。しかし、何故かターミナルでは有効になりませんでした...。
Karabiner
2015年05月、前まで使っていた方法が何故か使えなくなってしまいました。
今までは、Karabinerというアプリを使って、特定のキーをEscape, JIS_EISUU(英数)に割り当てていました。
<?xml version="1.0"?><root><list><item><name>LeaveInsMode with EISUU(Terminal)</name><identifier>private.app_terminal_esc_with_eisuu</identifier><only>TERMINAL</only><autogen>--KeyToKey-- KeyCode::ESCAPE, KeyCode::ESCAPE, KeyCode::JIS_EISUU</autogen><autogen>--KeyToKey-- KeyCode::J, VK_CONTROL, KeyCode::J, VK_CONTROL, KeyCode::JIS_EISUU</autogen></item></list></root>
割り当て方法としては、アプリの仕様変更などがあったかもしれないと、様々な方法を使ってみたのだけど、何故か有効にならない。アクセシビリティでも権限与えてるはずなんだけどな...。
とりあえず、それは置いておいて、これは、Custom Setting
と呼ばれるもので、所定の形式で書かれたXMLファイルを読み込むと、name
で指定された項目が表示され、その設定を有効にできるというものです。設定をチェック後は、Reload XML
で独自の設定が読み込まれ、有効になります。
デフォルトではprivate.xml
なので私はそれを使っていますが、ファイルは指定することもできます。
内容を見ていくと、例えば、以下のようになります。
<autogen>
--KeyToKey--
KeyCode::ESCAPE,
KeyCode::ESCAPE,
KeyCode::JIS_EISUU
</autogen>
これは、ESCが押された場合、ESC,JIS_EISUUの順にキーを押すというか、キーを変換します。
つまり、ESC -> ESC, 英数
となるわけですね。また、only
では、キーを有効にするアプリを指定できます。ここでは、TERMINAL
(ターミナルのこと)を指定していますが、他には、VI, MACVIM
なども指定できます。
ちなみに、指定できるキーコードは以下のページが参考になります。US
ではなくJIS
キーボードの場合は、前にJIS_
をつける点に注意です。