【期間限定 12/3-12/14】Amazonギフト券チャージで最大3%ポイント!

SublimeText3でタブ変換時に文字が消える現象を解決する方法

SublimeTextでGoogle日本語入力を使用していて日本語の候補が出た際にタブ(Tab)ボタンを押すと入力自体が消えてしまう現象が発生しました。

文字を入力していて消えてしまうとそれだけでストレスですし、マウスや矢印キーでいちいち選択するのも面倒。

そこでいろいろと調べてSublimeText3でタブ変換時に文字が消える症状が解決できたので紹介したいと思います。

使用環境

今回、SublimeTextでGoogle日本語入力を使用していて日本語の候補が出た際にタブ(Tab)ボタンを押すと入力自体が消えてしまう現象が出た際の使用環境を書いておきます。

使用環境
  • Mac iOS
  • SublimeText3を使用
  • Google日本語入力を使用

SublimeText3の設定方法

STEP.1

キーバインド(デフォルト)の保存先フォルダの有無の確認

SS
キーバインド設定箇所
SublimeTextメニュー
Preference
Key Bindings – Default

すると左右にキーバインドの設定が表示されます。

SS 3
左がデフォルトのキーバインド設定
右がユーザーのキーバインド設定

ここで左のデフォルトのキーバインド設定を編集する必要があります。

Command + sを押してみるとこのようなエラーが表示されてしまいます。

SS 1
MEMO
このエラーの意味は「デフォルトの設定ファイルを保存するディレクトリがない」という意味なので自分でディレクトリを作る必要があります。

エラーが表示されず編集が可能な場合はSTEP3まで進んでください。

STEP.2

キーバインド(デフォルト)の保存先フォルダの作成

SS 2
Finder
移動
ライブラリ
ライブラリフォルダ(ユーザー内)
SS 5
フォルダの作成
Application Support
Sublime Text 3
Packages
Default

再度Command + sを押してエラーが出ないか確認して一旦ファイルを閉じてください。

エラーが出なければ保存されていることになります。

注意
保存後、一度キーバインドファイルを閉じて再度開くと編集できるようになります。
STEP.3

キーバインド(デフォルト)の編集

そして102〜109行目あたりにある文字列と129行目〜133行目あたりにある文字列をすべてコメントアウトして保存してください。
コメントアウトはCommand + /(スラッシュ)ボタンで変換可能です。

102〜109行目あたりにある文字列

102〜109行目あたり
{ "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 },
		{ "key": "preceding_text", "operator": "not_regex_match", "operand": ".*\\b[0-9]+$", "match_all": true },
	]
},

コメントアウトして(↓)のように変更します。

102〜109行目あたり(コメントアウト)
// { "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 },
// 		{ "key": "preceding_text", "operator": "not_regex_match", "operand": ".*\\b[0-9]+$", "match_all": true },
// 	]
// },

129行目〜133行目あたりにある文字列

129行目〜133行目あたり
{ "keys": ["tab"], "command": "next_field", "context":
	[
		{ "key": "has_next_field", "operator": "equal", "operand": true }
	]
},
{ "keys": ["tab"], "command": "commit_completion", "context":
	[
		{ "key": "auto_complete_visible" },
		{ "key": "setting.auto_complete_commit_on_tab" }
	]
},

129行目〜133行目あたりにある文字列も同じようにコメントアウトして(↓)のように変更します。

129行目〜133行目あたり(コメントアウト)
// { "keys": ["tab"], "command": "next_field", "context":
// 	[
// 		{ "key": "has_next_field", "operator": "equal", "operand": true }
// 	]
// },
// { "keys": ["tab"], "command": "commit_completion", "context":
// 	[
// 		{ "key": "auto_complete_visible" },
// 		{ "key": "setting.auto_complete_commit_on_tab" }
// 	]
// },
注意
PCの環境やソフトのバージョンによって行数が微妙に変わる場合があるので必ず文字列を確認してください。

他のサイトでは102〜109行目あたりにある文字列だけコメントアウトするという記述が多かったですがこれだけだと文字入力の確定前にタブ選択する場合は消えてしまいました。

文字入力の確定前からタブ(Tab)ボタンを有効にしたいなら129行目〜133行目あたりもコメントアウトすることをおすすめします。

この方法で文字が消えない場合(補足)

今回紹介した方法で文字が消えない場合、SublimeTextのプラグイン『Emmet』を入れている可能性があります。

『Emmet』を入れている場合は上記設定だけだとPlain textでの入力モードのみ有効で、htmlモードだと文字が消えたまま。

その場合は(↓)のように設定します。

SublimeTextの設定箇所
Preference
Setting
SS 10
左がデフォルトのSublimeText3の設定
右がユーザーのSublimeText3の設定

ここで右側に(↓)ソースをコピペすればhtmlモードでも文字が消えずにタブ変換することが可能です。

JSON
"disable_tab_abbreviations": true,

以上で設定作業は終わりになります。

くらパパ

おつかれさまでした!ビールでも飲もう!

これで文字入力の予測変換がタブ(Tab)ボタンを押しても有効になり、文字が消えるといったこともなくなりました。

SublimeText3は自分なりにこういった細かいカスタマイズができるのが嬉しいですね。

コメントを残す