トラブル解決note》Sublime Textで Command+Shift+p (コマンドパレットのショートカット)が効かなくなった
ある日突然 Sublime Textのコマンドパレットのショートカット Command+Shift+p が効かなくなって大変困った。解決方法のメモ。
コマンドパレットは、Sublime Textのキモとも言えるもので、たいていの操作はここから始まる。当然そのショートカット Command+Shift+p は最頻出キーバインドの一つなわけで、使えないと効率がた落ちって感じ。 解決したのでその方法をメモっておく。
原因と調べ方
キーバインドが効かない原因は、
この2つのどちらか。これをまず切り分ける。
メニューから View > Show Consoleとするか、 `Ctrl+`` を押して コンソール画面を表示させる。
コンソールに、次の2行を入力(>>> はプロンプトなので入力しなくていい)
>>> sublime.log_ommands(True) >>> sublime.log_input(True)
続いて、調べたいキーバインドの操作をする。
今回なら "Command+Shift+p" を押す。
Sublime Textがキー操作のイベントを受信すると、押されたキーとそれによりキックされたコマンド内容が表示される。
key evt: shift+super+p command: show_overlay {"overlay": "command_palette"}
キックされたのが自分の期待する機能じゃなければ、内部のなにかとコンフリクトしている。
もしも キー操作したのに反応が返ってこないならば、
Sublime Text外のなにものか(他のアプリとか)がキー操作を奪っている可能性がある。つまり原因2の方ということになる。
1. Sublime Text内でコンフリクトしている場合
デフォルトのキーバインディングよりも、追加プラグインやカスタム設定したキーバインディングの方が優先されるらしいので、その辺りを中心に調べる。
単純な話なら、
・前述のコンソール画面の結果からわかるかもしれないし、
・基本設定 > キーバインド(日本語メニュー化している場合) で設定ファイル内にコンフリクトがないか調べてもいい。
ややこしそうなら、
FindKeyConflicts - Package Control というプラグインを入れる。コンフリクトしているキーバインドを一覧してくれるので解決が早い。
使い方:
コマンドパレットから 次を実行するとコンフリクト中のキーがパレットに一覧されるので目的のキーを選択する。
FindKeyConflicts: All Key Maps to Quick Panel:
そうすると、こんな感じで結果をテキスト出力してくれる。 下記の例だと、Ctrl+cが、デフォルトとTerminus(プラグイン)間でぶつかってる状態。
------------- Entry Details ------------- [ctrl+c] cancel_build Default terminus_keypress Terminus [{"key": "terminus_view"}]
他にも、
などいくつか出力モードがある。結果はテキストで一覧されるのでその後が扱いやすい。
2. Sublime Text 以外のアプリにキー操作を奪われてる場合
キーが効かなくなったタイミング前後に、
- 新規アプリのインストール
- 常駐系アプリのキーバインディング設定変更
をしていたらそれが怪しい。
私の場合は、 TickTick というタスク管理サービスのMac用アプリとぶつかっていた。TickTickアプリ側でこのショートカットを使うことはないのでそっちの設定を削除して対応した。
参考にした情報:
あいにく日本語の文献は見つけられなかったが、
Google先生に「sublime text command palette not work」とかなんとか聞いたら 速攻で Stack Overflow がヒットした。 "結構あるあるな" 困りごとなんだね。
Command Palette shortcut not working in Sublime Text3 - Stack Overflow
「No key event means something is stealing the key from Sublime ..」とあるのを見てすぐピンときた。助かったでちゅぅ。