Copilot Next Edit Suggestions(NES)
VS Code 1.99で、Copilot Next Edit Suggestions(以降、NES)が正式サポートされました。NESは、簡単に言うとコード補完機能です。
ただし、言語サーバで提供されていたような、メソッドやプロパティの候補を一覧表示して選択させる単純なものではなく、開発者の意図を予測してまとまったコードを提案してくれます。NESは既定で有効になっていますが、ステータスバーの[Copilot]アイコンから[次の編集提案]をオフにすることで無効にできます。
NESの基本操作
NESの利用に、特段の準備は不要です。いきなりコードを打ち込んでみて構いません。
例えば、JavaScriptの関数を定義するとして、図16のように「function calc」まで入力してみます。提示されたコードは、薄い斜体の文字で表示されます。ここで採れる手段は、[Tab]キーで確定させるか、[Esc]キーで取り消すかです。

図17は確定させたところです。

calculateSum関数が確定し、「calculateDifferenceも必要なんじゃないの?」と新たな提示が行われているのが分かります。同じく採用であれば[Tab]キー、不要なら[Esc]キーで、作業を進められます。
未確定の状態でマウスポインタを乗せると、ツールバーが表示されます(図18)。ツールバーにより、上記のキー以外の操作も可能です(表6)。

項目 | キー | 操作 |
---|---|---|
← | [Option]+[[]/[Alt]+[[] | 修正方法を後方向に切り替え |
→ | [Option]+[]]/[Alt]+[]] | 修正方法を前方向に切り替え |
単語を採用する | [Command]+[→]/[Ctrl]+[→] | 単語だけ確定させる |
ツールバーの右にある[…]をクリックすると、サブメニューが表示されます。メニューから、表7の操作が可能です。
項目 | 操作 |
---|---|
行を承諾する | カーソル行だけ確定させる |
常にツールバーを表示する | このツールバーが常に表示されるようにする |
Send Copilot Completion Feedback | フィードバックを送信する |
コメントから補完
NESによるコード補完は、コメントからでも可能です。同じく、JavaScriptで四則演算の関数を作成することを想定します。「四則演算の関数を作る。引数は」まで入力すると、「2つの数値と演算子」が候補として現れ、意図したものなら確定すると、関数本体が提示されます(図19)。

NESの設定
NESアイコンから表示されるメニューで[設定]を選択すると、表8の設定を呼び出すことができます(「NES関連」に○があるものはNES独自の項目)。
NES関連 | 項目 | 概要 |
---|---|---|
○ | github.copilot.nextEditSuggestions.enabled | NESを有効にするか(既定値:True) |
○ | github.copilot.nextEditSuggestions.fixes | NESによるコードの誤り訂正を有効にするか(既定値:True) |
― | editor.inlineSuggest.edits.allowCodeShifting | コードシフト(コード変更の内容をインラインで表示)を許可するか(既定値:always) |
― | editor.inlineSuggest.edits.renderSideBySide | コード変更の内容が大きくなるときにスペースがあれば横並びにできるようにするか(既定値:auto) |
― | editor.inlineSuggest.edits.showCollapsed | コード変更の内容を折り畳み表示するか(既定値:false) |
今回登場のショートカットキー
機能 | macOS | Windows |
---|---|---|
チャットビューのオープン | [Ctrl]+[Command]+[I] | [Ctrl]+[Alt]+[I] |
インラインチャット | [Command]+[I] | [Ctrl]+[I] |
クイックチャット | [Option]+[Shift]+[Command]+[L] | [Ctrl]+[Shift]+[Alt]+[L] |
NESによる提案の確定 | [Tab] | [Tab] |
NESによる提案のキャンセル | [Esc] | [Esc] |
まとめ
今回は、GitHub Copilotの概要と導入について紹介しました。基本機能であるチャットを中心に、新機能であるNext Edit Suggestionも絡めて、AIのサポートでコーディングがどのように便利に変わるか説明しました。
次回はこの続きとして、Visionによるコンテキスト画像の利用、Agentモードによる開発プロセスの自動化、そしてローカルLLMの導入などを紹介します。