VSCode

故あって、Visual Studio Code を使い始めています。
ただし、キーバインディングは自分用に変更してみました。(今までのSublime Text 3 の設定に似せて)

Visual Studio Code は、今まで使っていた Sublime Text 3 とほぼ同じ見た目、使い心地です。違いは、こちらの方が、無料、日本語化、日本語変換が標準で対応、カスタマイズが楽という利点があります。欠点としては、起動がちょっと遅い感じです。

今までカスタマイズしていたキーボードショートカット(キーバインディング)を VSCode にも設定したので、こちらにもメモしときます。


自分の設定例;(環境;macOS 10.13.6,VSCode 1.28.2)
A)コード補完の候補選択をTabとShift+Tabで上下に移動させる
B)Tab でカッコの外にカーソルを移動する
C)Shift+Tab でTabを挿入する


VSCode でキーボードショートカットを変更するには;
メニュー>「Code」 >「基本設定」>「キーボードショートカット」
を選ぶと、一覧が出ます。

A)ならば、suggestionで検索するとそれらしいコマンドが絞れます。(キーバインドを検索する時は、"tab" のように"" で囲みます。)

A-a)selectNextSuggestion
A-b)selectPrevSuggestion
ですね。
変更したい設定の行の左側の鉛筆マークをクリック(または行をダブルクリック)すると、新しいキーボードショートカットを押せばいいだけになっています。
(元のDefault設定に戻したい時は、その行で右クリックして「キーバインドのリセット」を選ぶ。)

そこで、
A-a)selectNextSuggestionは、tab
A-b)selectPrevSuggestionは、shit+tab
にしました。

詳細は、一覧の上の方に
「高度なカスタマイズを行うには、次を開いて編集: keybingings.json」
のkeybingings.json をクリックすると自分がカスタマイズした設定が書かれた jsonファイルが開きます。
これを見ると、変更した設定と、元のDefaultの設定がペアになっているのが分かります。
元のDefaultの設定の "command" の設定に "-(マイナス) " が付いています。つまり、無効化されているということですね。なので、元の設定はそのままで、カスタマイズしたショートカットを追加したい場合は、Defaultの設定部分を削除すれば無効化されなくなるので設定の追加になります。

実際にコードを入力してみると、コード補完候補を Tabと Shift+Tabキーで上下できるようになりました。(決定はEnterキー)


B)は cursor で検索すると
・cursorRight
が近そうです。

これを tab に変更しました。さらに、keybingings.json で無効化された元のDefault 設定部分も削除して、Default設定も有効のままにしました。

ここまでの設定で実際にコードを入力してみると、A)のTabキーで次のコード補完候補に移動させることができなくなっていました。
これは A-a)とB)が競合してしまったようです。この解消法なのですが、次のようにしたら解決できました。 

keybingings.json で;
{
    "key": "tab",
    "command": "cursorRight",
    "when": "textInputFocus"
}


{
    "key": "tab",
    "command": "cursorRight",
    "when": "!suggestWidgetMultipleSuggestions && !suggestWidgetVisible && textInputFocus"
}
のように書き換えます。
ここで "!" は否定の意味のようです。


C)は tab で検索すると;
・コマンド tab,キーバインド tab
が見つかります。
このキーバインドを shift+tab に変更します。

ここでも、設定が競合してしまうので、以下のように書き換えます。

{
    "key": "shift+tab",
    "command": "tab",
    "when": "!suggestWidgetMultipleSuggestions && !suggestWidgetVisible && editorTextFocus && !editorReadonly && !editorTabMovesFocus"
},
{
   "key": "tab",
    "command": "-tab",
    "when": "!suggestWidgetMultipleSuggestions && !suggestWidgetVisible && editorTextFocus && !editorReadonly && !editorTabMovesFocus"
},


これでA),B),C) の設定ができました。
最終的な keybingings.jsonファイルの内容は以下の通りです;

[
    {
        "key": "tab",
        "command": "selectNextSuggestion",
        "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "shift+tab",
        "command": "selectPrevSuggestion",
        "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "tab",
        "command": "cursorRight",
        "when": "!suggestWidgetMultipleSuggestions && !suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "shift+tab",
        "command": "tab",
        "when": "!suggestWidgetMultipleSuggestions && !suggestWidgetVisible && editorTextFocus && !editorReadonly && !editorTabMovesFocus"
    },
    {
        "key": "tab",
        "command": "-tab",
        "when": "!suggestWidgetMultipleSuggestions && !suggestWidgetVisible && editorTextFocus && !editorReadonly && !editorTabMovesFocus"
    },
    
]