vscode-docs/docs/copilot/overview.md

14 KiB

Order Area TOCTitle ContentId PageTitle DateApproved MetaDescription MetaSocialImage
1 copilot Overview 0aefcb70-7884-487f-953e-46c3e07f7cbe GitHub Copilot overview 10/29/2024 Enhance your coding with AI-powered suggestions and chat conversations with GitHub Copilot in Visual Studio Code. images/shared/github-copilot-social.png

GitHub Copilot in VS Code

The GitHub Copilot extension is an AI pair programmer tool that helps you write code faster and smarter. You can use the Copilot extension in Visual Studio Code to generate code, learn from the code it generates, and even configure your editor.

With GitHub Copilot in VS Code you can:

  • Get inline code suggestions while you're writing and iterating on code.
  • Start a chat conversation to generate or refactor source code, produce documentation comments, or generate unit tests.
  • Get help with fixing errors in your code, or resolve errors while running commands in the terminal.
  • Ask questions to help ramp-up on a new code base, or accelerate learning a new programming language or framework.
  • Use chat features to discover and configure your VS Code setup.

Prerequisites

Follow these steps to Set up GitHub Copilot in VS Code.

Copilot tutorials

Keyboard shortcuts

Use the following keyboard shortcuts to start a chat conversation with Copilot:

Shortcut Description
kb(workbench.action.chat.open) Open the Chat view and start a chat conversation with Copilot by using natural language.
kb(workbench.action.chat.openEditSession) Open the Copilot Edits view and start a code editing session across multiple files.
kb(workbench.action.quickchat.toggle) Open Quick Chat and ask a quick question to Copilot.
kb(inlinechat.start) Start Inline Chat to send a chat request to Copilot directly from the editor. Use natural language or use / commands to give instructions to Copilot.

Check our Copilot cheat sheet for an overview of the key Copilot commands and shortcuts.

Use cases for GitHub Copilot in VS Code

GitHub Copilot can provide assistance in a variety of scenarios:

Code completions in the editor

  • Copilot suggests code as you type. Copilot analyzes the context in the file you're editing and related files, and offers suggestions from within the editor. For example, begin typing the name of a method and Copilot suggests the implementation, following your coding style.

    Inline chat suggests the implementation of a 'CalculateDaysBetweenDates' JavaScript function

Iterate on large changes across multiple files

  • Start a AI-powered code editing session. Copilot Edits brings the conversational flow of Copilot Chat and fast feedback from Inline Chat together in one experience. Have an ongoing, multi-turn chat conversation on the side, while benefiting of inline code suggestions.

    Screenshot showing the Copilot Edits response for "Add a feedback field in the contact page" and showing the diff in the editor.

Answer coding questions

  • Provide guidance and support for common coding tasks and challenges. Ask Copilot about syntax or general programming concepts without requiring to navigate documentation or search online forums. Copilot gives responses in natural language format or in code snippet format. For example, you can ask questions such as "what is recursion?" or "how to create a singleton in Java?".

    Copilot Chat answering what a singleton is

  • Improve code understanding by explaining selected code. Copilot generates natural language descriptions of the code's functionality and purpose. This can be useful if you want to understand the code's behavior or for non-technical stakeholders who need to understand how the code works.

    Inline chat explaining which sorting algorithm is used in the selected text

  • Provide guidance that is specific to your codebase. Copilot has the context of your workspace and can give step-by-step guidance and code samples that are tailored to your project. For example, "how to add a contacts page?" or "how do I read customer data from the database?".

    Copilot Chat provides step-by-step guidance about adding a page to an Express app

Code refactoring and improvements

  • Provide suggestions for implementing code refactorings. Copilot suggests refactorings using the context of your codebase. For example, ask Copilot to refactor a function to not use recursion, or to suggest an algorithm that can improve performance.

    Inline chat refactoring to use different sorting algorithm

  • Suggest potential improvements to selected code, such as improved handling of errors and edge cases, or changes to the logical flow to make the code more readable.

    Copilot inline chat suggesting improvements to error handling

Fix issues

  • Propose a fix for bugs in your code with the /fix command by suggesting code snippets and solutions based on the context of the error or issue. For example, if your code produces an error message or warning, Copilot Chat can suggest possible fixes based on the error message, the code's syntax, and the surrounding code. The changes might consist of changes to variables, control structures, or function calls that could resolve the issue.

    Inline chat /fix for an error proposing to install a missing library

  • Propose a fix for failing tests (preview). When you run automated tests for your code, Copilot can suggest code fixes for tests that fail with the /fixTestFailure command.

    Copilot Chat /fixTestFailure for identifying and suggesting a fix for a failing test

  • Suggest terminal command fixes. When a command fails to run in the terminal, Copilot displays a sparkle in the gutter that offers a Quick Fix to explain what happened.

    Quick Chat with @terminal #terminalLastCommand and Copilot's answer

Jumpstart your project

  • Generate a new VS Code workspace for your choice of technologies with /new to get started quickly with a new project. Pick and choose your technology stack, preview the workspace files, and let Copilot scaffold the entire workspace for you.

    Asking the @workspace agent to scaffold a new Node.js project using TypeScript

  • Scaffold a new Jupyter notebook by using natural language. Generate a new notebook that is preconfigured based on a description by using /newNotebook. For example, to scaffold a new notebook that loads, inspects, and visualizes a sample dataset, prompt Copilot with "@workspace /newNotebook download titanic dataset and display key information using MatPlotLib".

    Asking the @workspace agent to scaffold a new notebook that reads titanic data, and visualizes with MatPlotLib

Generate unit test cases

  • Configure your testing framework setup based on your codebase. For example, if you have a JavaScript and TypeScript project, Copilot will suggest suitable testing frameworks and steps to configure them for your workspace.

    Chat view showing the /setupTests slash command to set up a testing framework for JavaScript and TypeScript

  • Write unit test cases for your testing framework based on the code open in the editor or the code snippet you highlight in the editor. Copilot identifies your testing framework and coding style and generates matching code snippets.

    Chat view showing the /tests slash command to generate unit tests for the Divide method in a C# calculator class

  • Identify and write test cases for edge cases and boundary conditions that might be difficult to identify manually. For instance, Copilot can suggest test cases for error handling, null values, or unexpected input types.

  • Suggest assertions that ensure the function is working correctly, based on the code's context and semantics. For example, generate assertions to ensure that function input parameters are valid.

Generate code documentation

  • Generate code documentation for multiple languages for the code open in the editor or the code snippet you highlight in the editor. Use /doc or a Copilot smart action to help you generate meaningful code documentation.

    Inline chat /doc example to generate documentation code comments for a calculator class

Productivity improvements

  • AI-generated commit messages and PR descriptions based on the code changes in a commit or the changes in a pull request. Use the sparkle button in the Source Control view or GitHub PR extension to generate a title and description that summarizes your changes.

    Hover over Source Control input box sparkle buttons shows Generate Commit Message

  • Ask help in the Command Palette to help you find the relevant command in VS Code. You can describe the functionality and Copilot can help identify the matching functionality. For example, type "code preview in scrollbar" in the Command Palette, and Copilot can identify that you're referring to the editor.minimap settings.

    Chat view with answer to "hide editor overview"

  • AI-generated rename suggestions for symbols in your source code. When you rename a symbol in your code, Copilot suggests a new name based on the context of the symbol and the codebase.

    Inline chat suggesting a new name for a symbol in a Python file

  • Semantic search results (preview). The Search view lists exact text matches across your files, in addition to matches that are semantically relevant based on your search text.

    Search view showing semantic search results that are not an exact match for the search criteria.

  • Use terminal inline chat to ask questions about the terminal or how to use specific shell commands. For example, you can ask questions such as "list the top 5 largest files in the src directory", or "how to enable shell integration".

    Screenshot showing that you can ask complex questions like "list the top 5 largest files in the src dir"

Next steps

Additional resources

You can read more about Copilot and how to use it in VS Code in the GitHub Copilot documentation.

Or check out the VS Code Copilot Series on YouTube, where you can find more introductory content and programming-specific videos for using Copilot with Python, C#, Java, PowerShell, C++, and more.

Check our Advanced Features video on YouTube for in-depth coverage of using Copilot for refactoring, context-based suggestions, unit tests, and more.