MacのSublimeText3で日本語が消えるバグを回避する


MacでSublimeText3を使っていて、Markdownやプログラムのコメントを書いている時に、変換した日本語が消えてしまうのが煩わしかったので、恒久対応した方法をまとめました。

# 原因
どうやらMacでは、確定のための`Enter`が、改行のための`Enter`と認識されて、設定されたプラグインのKeyBind（特定のKey押下をトリガーに処理を実行する仕組み）が実行されてしまうらしいです。なので同じ問題はWindows環境では起きません。

# 環境

* Mac OS X
* Sublime Text3 (Build 3065)
	* DocBlockr（プログラムのコメント用プラグイン）
	* SmartMarkdown（Markdown用プラグイン）

# 対応方法

## 概要
該当のプラグインをPackage Control経由ではなく、GitHubからソースをダウンロードし、手動でPackageディレクトリに放り込み、KeyBindに手を入れます。

Package Controlを使わないのは、Package Controlでインストールされるパッケージだと中をいじることが面倒だからです。

## ①DocBlockrへの対応

### DocBlockrとは

DocBlockrはプログラムのコメント作成を色々と補助してくれるパッケージ。引数や戻り値を見て、

```javascript
/**
 * [description]
 * @param  {[type]} window   [description]
 * @param  {[type]} document [description]
 * @param  {[type]} $        [description]
 * @return {[type]}          [description]
 */
(function(window, document, $){
    ...
```

といった内容を自動生成してくれます。他にも地味に改行後に`*`を追加してくれたりと、ないと結構面倒くさいです。

ちなみにWebで Preferences > Package Settings > DocBlockr > Settings - Userに、 

```JSON
{
    "jsdocs_extend_double_slash": false
}
```

と設定すると回避できるという記述もありますが、キー名の示す通り、`//`で始まるコメントでしか改善されない模様。

### 対応方法

おそらくDocBlockrはディフォルトでインストールされていると思うので、削除から。

#### 1. パッケージの削除
`shift`+`command`+`p`でCommand Paletteを開き、Package Control: Remove Packageを選択（検索窓に「remo...」まで入れれば1番上か2番目に出てくるでしょう）

![remove pakage](https://www.evernote.com/shard/s12/sh/dcd5dd7c-e8b7-453d-8c6d-a8f6bf6a0190/9605473295af83a9719ed07bbcdc9792/deep/0/remove-package.png)

続いて出てきた窓でDocBlockrを探して選択します。

![remove DocBlockr](https://www.evernote.com/shard/s12/sh/3649db27-57ee-4746-bae6-c9b2ba14a116/67d3ac9da059db253711f9707081858e/deep/0/remove-DocBlockr.png)

これで削除は完了。


#### 2. パッケージのダウンロード
[GitHub上のプラグインページ](https://github.com/spadgos/sublime-jsdocs)へ移動して、`Download ZIP`などでダウンロードします。

ダウンロードしたものは解凍しておきましょう。

#### 3. パッケージのインストール
ターミナルを開き、

```bash
$ open ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/
```

と打ちましょう。

![Packages ディレクトリ](https://www.evernote.com/shard/s12/sh/76343ff2-4916-48a7-be56-be06b33e3cfc/6a2f3c0dbaa063b8eb3eb95f77ff5622/deep/0/Packages.png)

Finderが開くので、Packages以下に、解凍したディレクトリ（ここではsublime-jsdocs-master）を放り込みます。ディクトリ名は変えたければ変えても構いません。

#### 4. KeyBindの変更

ここが一番大事です。sublime-jsdocs-master以下のDefault.sublime-keymapというファイルを開きます。

![Default.sublime-keymap](https://www.evernote.com/shard/s12/sh/3140833c-46af-4c4f-a89c-0f6ac008e716/e56bd44ae454ac7ed369d30d59d92021/deep/0/sublime-jsdocs-master.png)

30行目と39行目に同じ記述がありますが、

```JSON
{ "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "\n${TM_CURRENT_LINE/^\\s*(\\*\\s*).*$/$1/}"},
```

"keys": ["`enter`"]となっているところを、"keys": ["`shift+enter`"]と変更しましょう。

30行目と39行目のAfter。

```JSON
{ "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "\n${TM_CURRENT_LINE/^\\s*(\\*\\s*).*$/$1/}"},
```

これでSublime Textを再起動すればOK。変換で日本語が消えなくて、複数行コメント内で`shift`+`enter`を押すと改行してかつコメント行が増えれば成功です。

## ②SmartMarkdownへの対応

### SmartMarkdownとは

Markdownの入力を色々助けてくれるプラグイン。

### 対応方法

初めからは入っていないので、ダウンロードから。というか手順はDocBlockrの時と変わりません。

#### 1. パッケージのダウンロード

[GitHub上のプラグインページ](https://github.com/demon386/SmartMarkdown)へ移動して、`Download ZIP`などでダウンロード。

#### 2. パッケージのインストール
割愛（上記参照）

#### 3. KeyBindの変更
SmartMarkdown-master以下にある、Default.sublime-keymapを開きます。

![Default.sublime-keymap](https://www.evernote.com/shard/s12/sh/fe05f12b-7268-45e8-8961-9a93475da001/976c4636d7804e30f1a9009a87d55a0e/deep/0/SmartMarkdown-master.png)

12行目と18行目に以下の記述があります。

```JSON
{ "keys": ["enter"], "command": "smart_list", "context":
```

DocBlockrの時と同様、"keys": ["`enter`"]となっているところを、"keys": ["`shift+enter`"]などに変更しましょう。

12行目と18行目のAfter。

```JSON
{ "keys": ["shift+enter"], "command": "smart_list", "context":
```

> **参考**
> [MacでSmartMarkdown利用時、日本語の変換確定で文字が消える問題の対策 | 豆腐メンタルは崩れない](http://wbtmiu.postach.io/macdesmartmarkdownli-yong-shi-ri-ben-yu-nobian-huan-que-ding-dewen-zi-gaxiao-eruwen-ti-nodui-ce)