VSCode で Copilotのショートカットキーが効かないときの原因と対策

# 概要
前から、社内でCopilotの布教活動の意味を込めて、 https://ai-native-development.gitbook.io/docs/v/ja/ を試しているところを社内に配信しています。

動かなかったものがあったので、その原因と対策です。実質的に、VSCodeのショートカット設定の話になります。

# 動作した/しなかったショートカットの分類
当方、Mac Userです

- 動作した
    - 提案を受け入れる: `TAB`
    - 提案を拒否する: `Esc`
    - 複数の提案を表示する: `Ctrl` + `Enter`
- 動作しなかった
    - 単語レベルで受け入れる: `Ctrl` + `→`
    - 次の提案を見る: `Alt` + `]`
    - 前の提案を見る: `Alt` + `[`
    - インライン提案をトリガーする: `Alt` + `/`
    - サイドバーを切り替える: `Ctrl` + `Shift` + `a`
- 諸事情によりノーコメント
    - Labs 機能リストを表示する: `Ctrl` + `Shift` + `Alt` + `e`

# 動作しなかったショートカットの対策

## 単語レベルで受け入れる: `Ctrl` + `→`
### 原因
公式docの[macOS のキーボード ショートカット](https://docs.github.com/ja/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment#keyboard-shortcuts-for-macos) には当該のショートカットの記載がないです。

### 解決策
macOSあるあるですが、`Ctrl` + `→` ではなく、`Command` + `→` ですと、想定と思われる動作をしました。


### 参考1: VSCodeでのショットカットキー一覧表示
検索一覧

1. `Command`+`K` + `Command`+`S` で、ショートカットキー一覧が表示されます。
2. 検索ボックスの右にある「キーボード」アイコンをクリックします。
3. 探したいショートカット(今回は `Command` + `→`)を入力
4. 該当するショートカット一覧が出ます。

![shortcut_list01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202/49df9aa1-a8b0-4ed1-2e69-6d578aff6098.png)


上記の添付画像では、`Command` + `→` は5種類の機能に割り当てられていることがわかります。

### 参考2: VSCodeでのショットカットキーを削除
該当以外のショートカットの暴発を(少なくとも僕は)してほしくないので、削除することにします。
Copilotと書いていないので、わかりにくいですが、`インラインの提案の次の単語を承諾する`以外を選んで、 `Command` + `backspace` で削除できます。



## 次の提案を見る: `Alt` + `]`
### 原因
ショートカットキーの重複でした。  

![shortcut_list02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202/10e23635-c45b-912c-d438-bed921e26c6a.png)



### 解決策
今回は、Copilot優先なので、`アクセシビリティ対応ビューで次を表示` を消します。
`Alt` + `]` 以外のショートカットのほうがいい人は、`次のインライン候補を表示する` のショートカットキーを変えてください。

ちなみに、`アクセシビリティ対応ビューで次を表示` を消すと、keybindings.jsonに次の項目が追加されているはずです。
```json
  {
    "key": "alt+]",
    "command": "-editor.action.accessibleViewNext",
    "when": "accessibleViewIsShown && accessibleViewSupportsNavigation"
  }
```

## 前の提案を見る: `Alt` + `[`
### 原因

前項目と同様にショートカットキーの重複でした。  

![shortcut_list03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202/79d461ad-36f9-2343-0592-edc788ee6046.png)

### 解決策
今回は、Copilot優先なので、`アクセシビリティ対応ビューで前を表示`を消します。`前のインライン候補を表示する`のみが有効になればいいです。
`Alt` + `[` 以外のショートカットのほうがいい人は、`前のインライン候補を表示する` のショートカットキーを変えてください。


ちなみに、`アクセシビリティ対応ビューで前を表示` を消すと、keybindings.jsonに次の項目が追加されているはずです。
```json
  {
    "key": "alt+[",
    "command": "-editor.action.accessibleViewPrevious",
    "when": "accessibleViewIsShown && accessibleViewSupportsNavigation"
  }
```


## インライン提案をトリガーする: `Alt` + `\`
### 原因
ショートカット自体の設定がされていませんでした。

![shortcut_list04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202/7514298d-b345-3680-4cc9-ec33ff3f0d36.png)

検索ワード: editor.action.inlineSuggest.trigger


### 解決策
普通に設定しましょう。
ただし、JISキーボードでは、`\` の入力自体が `Alt` + `¥` になるので、`Alt` + `\` ではなく、`Alt` + `¥` を設定するのがデフォルトの意図に近いように思います。

設定すると、keybindings.jsonに次の項目が追加されているはずです。
```json
  {
    "key": "alt+[IntlYen]",
    "command": "editor.action.inlineSuggest.trigger"
  }
```

## サイドバーを切り替える: `Ctrl` + `Shift` + `a`
効かなかったというよりも、Copilotとの関係が謎です。
英語版の記述を見ても、[Toggle sidebar](https://ai-native-development.gitbook.io/docs/client-side-tips/github-copilot-shortcuts) なので、Copilot特有の機能との関連がいまいちわかりません。



# 参考リンク
- https://ai-native-development.gitbook.io/docs/v/ja/client-side-tips/github-copilot-shortcuts
- https://docs.github.com/ja/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment