Visual Studio Codeで言語ごとに別のキーバインドを割り当てる

現代の多くのテキストエディタ同様、VSCodeでもキーバインドのカスタマイズができます。今回は、VSCodeのキーバインドのちょっと進んだ設定方法として、編集中の言語ごとにキーバインドを切り替える方法を紹介したいと思います。

動機

わたしは AsciiDocのプレビューを VSCodeでやるので、AsciiDocのプレビューをキーバインドで割り当てています。 しかし、AsciiDocのプレビューは AsciiDocの編集時以外は必要のないキーバインドです。 間違って Markdown編集時にキーバインド発動して欲しくないですし、Markdown編集時はMarkdown向けのキーバインドを割り当てたいです。

動作確認環境

  • macOS Sierra 10.12.6
  • Visual Studio Code 1.17.1

GUIでのキーバインド設定の基本方法

まずはキーバインド設定の基本方法のおさらい。 メニューから、 Code → 基本設定 → キーボードショートカット を選択 それっぽい操作名(ここでは preview) で検索し、該当するコマンドの左にある鉛筆アイコンをクリックしてキーを入力します。 GUIを使った設定方法としては以上です。

keybindings.json を使った設定の方法

今回のように、少し複雑なキーバインドを設定するには keybindings.json という設定ファイルを直接編集する方法を使います。 先程のキーボードショートカットの画面で、「次を開いて編集: keybindings.json」をクリックします。 keybindings.json の一つのキーバインドは、下記のような構成です。 key はバインドするキーで、"ctrl+shift+m" のような方法で記述します。ctrl, shift, alt, cmd が使えます。(Windows の場合は cmd の代わりに winが使えます。) command はコマンド名で、先程のキーボードショートカットの画面で検索した時に表示されます。先程の例だと、"adoc.previewToSide" がコマンド名となります。 さいごの when はこのキーバインドが適用される条件ですが、これが今回のポイントとなります。 よくある設定としては "editorTextFocus" というように記述して、テキスト編集中のみ有効というような条件を記載しますが、ここで特定の言語を編集中のみ有効という条件が記載できます。 特定の言語を編集中のみ有効とする場合は、"editorLangId == markdown" と記載します。 ここで markdown は Markdown の ID(Language Identifier) というものです。 各言語の IDについては、一般的なものは VSCode 公式ページ に Known language identifiers として羅列されています。 ここに載っていない、拡張機能でサポートされる言語の IDについては拡張機能の「コントリビューション」の項目を見るとわかります。 左端のアクティビティバーより、拡張機能 → 拡張機能を選択 → コントリビューション と選択すると、その拡張機能でサポートされる言語のIDが分かります AsciiDoc 編集中のみ AsciiDoc のプレビューを有効にしたい場合、キーバインドとしては以下のように記載します。

使用例

わたしが使っているキーバインドを使用例としてあげておきます。もともと Atomで慣れていたため、Markdown のプレビューといえば ctrl+shift+mです。 いちいちプレビューのキーバインド覚えるのが面倒だったので、Markdown 編集時も AsciiDoc 編集時も PlantUML 編集時も ctrl+shift+m でプレビューできるようにしました。

さいごに

今回は言語別にキーバインドを切り替える方法を紹介しましたが、それ以外にもキーバインドを有効にする条件にはいろいろ記載ができるみたいです。 また便利な使い方を見つけたら共有したいと思います。
最後まで読んでいただきありがとうございます。 このブログを「いいな」と感じていただけましたら、Twiter にてフォローいただけるとうれしいです。ブログ更新情報などもお届けします。



りゅーた
フリーランスのエンジニアしてます。Android、iOS アプリの開発、対向サーバの開発、C/C++のライブラリ開発が現在のメイン。趣味はテニス・ゲーム・自転車。2児の父

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA