
HTML や CSS の勉強の相棒として、Sublime Text 3 を使い始めたのですが、日本語入力中に 変換候補を「Tab」キーで選択しようとすると、確定していなかった入力中の文字がすべて消えてしまってやり直すはめになるという現象に困っておりました。
矢印キーで選択したりして、しのいでいましたが、不便きわまりないので対処してみました。
まず環境から
- Sublime Text のバージョンは 3 を使用。
- 日本語入力システムは、Google 日本語入力を使用。
この環境で、Sublime Text で日本語入力をしているときに、「Tab」キーで変換候補を選択できるようにしたいと思います。私は、Google 日本語入力を使用していますが、「Tab」キーで変換候補を選択するというのは別の入力システムでも一般的なものだと思われます。
「Tab」キーのデフォルトのキーバインドを無効にする
通常、Sublime Text で何か設定をする場合は、「Default」と「User」(日本語化している場合は「標準」と「ユーザ」)があり、「User」の方に設定を追加するのですが、今回は「Default」の方に手を下します。
キーバインドの変更なので、「Preferences > Key Bindings – Default」(日本語化している場合は「基本設定 > キーバインド – 標準 」)を開きます。

すると、「Default (OSX).sublime-keymap」が開きます。

「Default (OSX).sublime-keymap」の注意点
「Default (OSX).sublime-keymap」は一点注意がありまして、初めて開いた場合はどうやら、ファイルが存在しないようで(Sublime Text 3 だけ?)、このままだと編集ができません。
そこで、いったん「Cmd + S」で保存します。それから一度閉じて、再び開き直します。(保存しただけでは編集できませんでした。)

「/Users/ユーザー名/Library/Application Support/Sublime Text 3/Packages/Default」に「Default (OSX).sublime-keymap」があれば OK です。確認したついでに、念のためバックアップもとっておきましょう。
「Default (OSX).sublime-keymap」の変更箇所
「Preferences > Key Bindings – Default」で開いた「Default (OSX).sublime-keymap」の以下の箇所をコメントアウトします。
1 2 3 4 5 6 7 | { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} }, { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false}, "context": [ { "key": "setting.tab_completion", "operator": "equal", "operand": true } ] }, |
95 行目から101 行目までの 7 行をコメントアウトします。もしかすると行数は環境によって違うこともあるかもしれないので、目安にして下さい。
(実はコメントアウトする箇所はネットで調べたので、リンクを貼りたかったのですが、初めにどこで知ったのか分からなくなってしまいました。すみません。)
1 2 3 4 5 6 7 | //{ "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} }, //{ "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false}, // "context": // [ // { "key": "setting.tab_completion", "operator": "equal", "operand": true } // ] // }, |
これで日本語入力中に、サジェストされた入力・変換候補を「Tab」キーで選択できるようになります。
スニペットはコマンドパレットで
無事、日本語入力中に「Tab」キーで変換候補の選択ができるようになりましたが、無効にした設定はスニペットを「Tab」キーで展開するための設定です。よって、スニペットは別の方法で展開する必要があるので、その方法もメモしておきます。
スニペットとは
例えば、Sublime Textで「html」と入力して「Tab」キーを押すと、自動で html ファイルを作成するときのお決まりの呪文を展開してくれます。
1 2 3 4 5 6 7 8 9 | <!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html> |
こんなのとかです。毎回一緒だから、自動で入力してくれた方が、断然お得です。捨てがたい。捨てられない機能なので、別の方法で解決します。
コマンドパレットから展開

コマンドパレットは、Sublime Text で実行可能なコマンドを検索して実行できる便利機能です。候補をサジェストしてくれるので、適当に入力しても目的の機能を簡単に呼び出すことができます。
このコマンドパレットは「Cmd + Shift + P」(Windows の場合は 「Ctrl + Shift + P」)で開くことができます。続けて、「html」と入力すると「html」という文字列に関係するコマンドがサジェストされます。そこでスニペットも選択・実行可能です。
まとめ
「Tab」キーを日本語入力時と、スニペットのどちらで使いたいかという、トレードオフになりますが、自分の場合はスニペットは、コマンドパレットで十分なので、快適に日本語入力することを優先させました。
よろしければ、こちらも参考にして下さい。
Mac に Sublime Text 3 をインストールして、日本語化する方法