Mac
Markdown
SublimeText3

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

More than 3 years have passed since last update.

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

/**
 * [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に、

{
    "jsdocs_extend_double_slash": false
}

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

対応方法

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

1. パッケージの削除

shift+command+pでCommand Paletteを開き、Package Control: Remove Packageを選択(検索窓に「remo...」まで入れれば1番上か2番目に出てくるでしょう)

remove pakage

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

remove DocBlockr

これで削除は完了。

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

GitHub上のプラグインページへ移動して、Download ZIPなどでダウンロードします。

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

3. パッケージのインストール

ターミナルを開き、

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

と打ちましょう。

Packages ディレクトリ

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

4. KeyBindの変更

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

Default.sublime-keymap

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

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

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

30行目と39行目のAfter。

{ "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上のプラグインページへ移動して、Download ZIPなどでダウンロード。

2. パッケージのインストール

割愛(上記参照)

3. KeyBindの変更

SmartMarkdown-master以下にある、Default.sublime-keymapを開きます。

Default.sublime-keymap

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

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

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

12行目と18行目のAfter。

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

参考
MacでSmartMarkdown利用時、日本語の変換確定で文字が消える問題の対策 | 豆腐メンタルは崩れない