Mac の Sublime Text 3 で SKK を快適に使う

  • 5
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

ここでは AquaSKK で発生した問題と解決方法を記載します。他の SKK ライクな IM などについては検証していません。

問題

SKK の利用において、最も頻繁に使う機能の1つに「キャンセル」がある。デフォルトでは「キャンセル」は ESC あるいは Ctrl+G に割り当てられている。

一方、Sublime Text 3 では Ctrl+G は行番号指定ジャンプに割り当てられている。 Sublime Text は自身のアプリケーション内でのキーバインド設定を優先するため、 SKK 側の Ctrl+G (キャンセル)が効かない。

解決方法

まず、 default キーマップ用のファイルを作成する。

$ touch ~/Library/Application` Support/Sublime\ Text\ 3/Packages/Default/Default\ \(OSX\).sublime-keymap

次に、 default のキーマップを開く。
Preferences -> Key Bindings - Default
このキーマップの内容を先程作成した Default (OSX).sublime-keymap というファイルにコピーする。

最後に、 Default (OSX).sublime-keymap をエディタで開き、以下の行を削除(もしくは他のキーに変更)する。

    { "keys": ["ctrl+g"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },

変更する場合は "ctrl+g" の部分を変更すれば良いが、複数キー入力の1つ目を "ctrl+g" にしてはならない。

ダメな例)["ctrl+g", "ctrl+l"]

解説

問題を解決したいだけの人はここまでで十分である。以下に上記解決方法の詳細を解説する。

この手の問題に対して検索して出てくる方法として、 Sublime Text 3 の user のキーマップ上で Ctrl+G を無効にする、というものがある。

[
    { "keys": ["ctrl+g"], "command": "unbound" }
]

この設定を行うことで、 Ctrl+G を押しても行番号指定ジャンプのためのオーバーレイは表示されなくなる。しかし、 SKK 側には Ctrl+G は伝達されない。依然、キーマップ上でその入力は Sublime Text のものとして登録されているためだ。

そこで、 user のキーマップに追加するのではなく、 default のキーマップ上から Ctrl+G を削除することにする。これによって、 Gtrl+G は Sublime Text 上で握り潰されず、 SKK まで到達されるようになる。

ただ、 Sublime Text 3 では default のキーマップを表示することはできるが、そのまま編集することはできない(そもそも所定のディレクトリに対象のファイルが存在しない)。

そのため、所定のディレクトリに自らファイルを作り、 default のキーマップの内容をそのままコピーする必要がある。そうすれば、作成したファイルを参照するようになるので、編集も可能だ。やり方は既に書いた。