スポンサーリンク

SublimeText2 : GoogleIME(ATOKも)でタブキーによる予測変換が選択できない時の対処方法

SublimeText2を使い始めました。以前はATOKを使っていたのですが、PHPStormで不具合というか、視覚的な問題があったため、GoogleIMEに変更しました。何気に使っていたATOKの辞書引き(国語辞書とか)ができないのが痛いです 。結局併用していますが、この話はいずれ書きたいと思います。

タイトルの件ですが、GoogleIMEは、日本語を入力すると予測変換候補が表示され、Tabキーで候補選択を行います。これがSublimeText上だと、TabキーのイベントがGoogleIMEに届く前にSublimeTextに処理されていまい、入力した文字が入力変換中にもかかわらず消えてしまいます。たぶん・・・こんな処理だという予想です。

SublimeTextのキーバインドを変更する


対処方法を探していたら、SublimeTextのDefault Key Bindingsを変更すれば良いという記事を見つけました。内容としては、Tabキーで処理される部分を削除するという内容でした。なるほどと思い、Default(OSX).sublime-keymapの該当箇所L.93-99をコメントアウトしてみました。

Sublime Text 2 > Preferences > Key Bindings - Default

ダメでした!

他にも同様の記事を見つけましたが、同じくL.93-99をコメントアウトするとのことでした。

Default(OSX).sublime-keymapを見ると、L.100-129にもTabキーの処理({ "keys": ["tab"]・・・})があります。それらもコメントアウトしたら予測変換が選択できるようになりました。

初期設定を全部カットするのはなんか気持ち悪いと思い、他の方法を試すことにしました。

Sublime Text 日本語がtabキーで改行(消える)場合の対策 - 酒と泪とRubyとRailsと

http://morizyun.github.io/blog/markdown-sublime-text2/

KeyRemap4MacBookでTabキーを別のキーに割り当てる

単純に思いつくのは、GoogleIMEのTabキーを別のキーに割り当ててコンフリクトを避けることです。この方針で検索したところ、下の記事でKeyRemap4MacBookを利用した素敵な方法を見つけました。一点だけ注意する必要がありますが、最適解ではないでしょうか。

keyremap4macbook - Sublime TextとGoogleIMEを併用しているとき、予測変換が使えなくなる問題の応急処置 - Qiita [キータ] 

http://qiita.com/kei_q/items/c9a6fbd55391d90af1f6

以下の手順で行います。

  1. GoogleIMEで予測変換をTab以外のKeyに割り当てる。
  2. KeyRemap4MacBookで以下の条件で、Tabを押された時にKeyが実行されるように設定する。
    • SublimeText利用中
    • GoogleIMEの日本語入力がON

つまり、2.の条件下でTabを押すと、KeyRemap4MacBookがKeyに変更するので、SublimeTextにTabのイベントが伝わらず、入力中の文字が消えないということです。そして、置き換えられたKeyがGoogleIMEに伝わり、1.で設定した予測変換が動作します。

GoogleIMEの設定


  1. メニュー > 環境設定を開きます。
  2. 一般タブにある、キー設定キー設定の選択編集
    • 左下の編集にあるエントリーを追加変換前入力中を追加します。
    • モード:変換前入力中、入力キー:他のアプリと重複しないように、コマンド:予測変換
    • ここでは、入力キー:Ctrl+¥としています。 参考記事では、変換前入力中のみ指定していますが、私の環境では変換中も追加しないと期待した動作になりませんでした。

KeyRemap4MacBookの設定

KeyRemap4MacBook

https://pqrs.org/macosx/keyremap4macbook/index.html.ja

private.xmlに下記を追加します。

GoogleIMEで設定したCtrl+¥をTabに割り当てます。



    sublime
    com.sublimetext.2


    sublime_googleIME
    private.sublime_googleIME
    SUBLIME
    JAPANESE
        __KeyToKey__
            KeyCode::TAB, ModifierFlag::NONE,
            KeyCode::JIS_YEN, ModifierFlag::CONTROL_L
        


<inputsource_only>JAPANESE</inputsource_only>を初めて知りました。日本語入力がONになっている時のみ動作する、という条件のようです。

これで、GoogleIMEを日本語入力ONかつSublimeTextでのみTabキーを押した場合にCtrl+¥が実行されるので、予測変換が選択可能になります。ただ、日本語入力をONにしたままだと、TabがSublimeText本来の動作にならないので、日本語の入力終わったらOFFにするのを忘れないように。

ついでにATOKも(Ver.2011のはなし)

GoogleIMEとばかり書いていますが、予測変換があるのはATOKも同じです。

メニュー > キー・ローマ字カスタマイズキー設定を開きます。

表示:機能

機能:推測変換の入力中:tabを選択して、左下のプラス(+)をクリック。

キーを追加が表示されるので、直接入力または一覧から選択でお好みのショートカットを設定します。

結局

SublimeTextの話だったのですが、KeyRemap4MacBookが便利という内容になりました。