VSCode で iTerm2 っぽい感じのショートカットキーを再現する

## お気持ち

時代の流れに流されて、ついに Atom から VSCode に乗り換えた。

Atom から乗り換えるにあたって、一番の変化は「エディタにターミナルが組み込まれたこと」だと感じている。 これを機に、メインの端末エミュレータも iTerm2 から VSCode 内臓のものに乗り換えることにした。

ただ、実際使ってみると「ショートカットキー違いすぎて GUI でしか操作できねえ... ストレスマッハでござる...」 になった。

そこで、普段 iTerm2 で慣れ親しんだショートカットキーたちを VSCode の内蔵ターミナルでも使えるように設定することにした。

## やりたいと思ったこと

個人的には、以下があればまあ概ねストレスなく使えそうみたいな感じだった。

- `[cmd+t]` 新しいタブを開きたい
- `[cmd+w]` タブを閉じたい
- `[cmd+d]` タブを分割したい
- `[cmd+1~9]` n番目のタブに移動したい
- `[cmd+r]` `clear` したい
- `[cmd+option+i]` 統合ターミナルを開いたり閉じたりしたい (これは iTerm2 というか Chrome のインスペクタを開くっぽい感じにしたかった)

## 設定方法

`keybinding.json` にガシガシ書いていく。

### `[cmd+t]` 新しいタブを開きたい

```json
[
    {
        "key": "cmd+t",
        "command": "workbench.action.terminal.new",
        "when": "terminalFocus"
    },
    {
        "key": "ctrl+shift+`",
        "command": "-workbench.action.terminal.new"
    }
]
```

### `[cmd+w]` タブを閉じたい

```json
[
    {
        "key": "cmd+w",
        "command": "workbench.action.terminal.kill",
        "when": "terminalFocus"
    }
]
```

### `[cmd+d]` タブを分割したい

```json
[
    {
        "key": "cmd+d",
        "command": "workbench.action.terminal.split",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+\\",
        "command": "-workbench.action.terminal.split",
        "when": "terminalFocus"
    },
    {
        "key": "ctrl+shift+5",
        "command": "-workbench.action.terminal.split",
        "when": "terminalFocus"
    }
]
```

### `[cmd+1~9]` n番目のタブに移動したい

```json
[
    {
        "key": "cmd+1",
        "command": "workbench.action.terminal.focusAtIndex1",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+2",
        "command": "workbench.action.terminal.focusAtIndex2",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+3",
        "command": "workbench.action.terminal.focusAtIndex3",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+4",
        "command": "workbench.action.terminal.focusAtIndex4",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+5",
        "command": "workbench.action.terminal.focusAtIndex5",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+6",
        "command": "workbench.action.terminal.focusAtIndex6",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+7",
        "command": "workbench.action.terminal.focusAtIndex7",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+8",
        "command": "workbench.action.terminal.focusAtIndex8",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+9",
        "command": "workbench.action.terminal.focusAtIndex9",
        "when": "terminalFocus"
    }
]
```

### `[cmd+r]` `clear` したい

```json
[
    {
        "key": "cmd+r",
        "command": "workbench.action.terminal.clear",
        "when": "terminalFocus"
    },
    {
        "key": "cmd+k",
        "command": "-workbench.action.terminal.clear",
        "when": "terminalFocus"
    }
]
```

### `[cmd+option+i]` 統合ターミナルを開いたり閉じたりしたい

```json
[
    {
        "key": "alt+cmd+i",
        "command": "workbench.action.terminal.toggleTerminal"
    },
    {
        "key": "ctrl+`",
        "command": "-workbench.action.terminal.toggleTerminal"
    }
]
```

## 補足情報

補足事項としては、以下の2つである。

1つ目は、デフォルトで、何かしらのショートカットキーが割り当てられている場合は、マイナス付けて記述することによって割り当てを外すことができるっぽいということ。 (詳しくは、書いてある json を参照しれ)

2つ目は、`"when"` でショートカットキーが有効になる場面を限定できることである。
今回は、`"when": "terminalFocus"` を多用している。 これはターミナルにフォーカスがあたっているときにのみショートカットキーが有効ということを意味している。

## 所感

なんか iTerm2 みたいな動きするようになった。