Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
144 changes: 49 additions & 95 deletions docs/get-started/visual-studio-ide.md

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
84 changes: 47 additions & 37 deletions docs/ide/using-intellisense.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Use IntelliSense for quick information & completion
description: Explore how to work with IntelliSense features in Visual Studio, including List Members, Parameter Info, Quick Info, and Complete Word.
ms.date: 1/24/2025
ms.date: 3/19/2026
ms.topic: concept-article
helpviewer_keywords:
- Quick info
Expand All @@ -26,95 +26,104 @@ These features include:

Many aspects of IntelliSense are language-specific. For more information about IntelliSense for different languages, see the articles listed in the [Related content](#related-content) section.

In addition to IntelliSense, Visual Studio offers AI-powered code completions through GitHub Copilot. Copilot inline suggestions work alongside IntelliSense to provide whole-line and multi-line completions. To learn more, see [Get started with GitHub Copilot completions](visual-studio-github-copilot-extension.md).

## List Members

A list of valid members from a type (or namespace) appears after you type a trigger character (for example, a period (`.`) in managed code or `::` in C++). If you continue typing characters, the list is filtered to include only the members that begin with those characters or where the beginning of *any* word within the name starts with those characters. IntelliSense also performs *camel case* matching, so you can just type the first letter of each camel-cased word in the member name to see the matches.
A list of valid members from a type or namespace appears after you type a trigger character, such as a period (`.`) in managed code or `::` in C++. If you continue typing characters, the list filters to include only the members that begin with those characters or where the beginning of *any* word within the name starts with those characters. IntelliSense also performs *camel case* matching, so you can type just the first letter of each camel-cased word in the member name to see the matches.

After selecting an item, you can insert it into your code by pressing **Tab** or by typing a space. If you select an item and type a period, the item appears followed by the period, which brings up another member list. When you select an item but before you insert it, you get [Quick Info](#quick-info) for the item.
After you select an item, you can insert it into your code by pressing **Tab** or by typing a space. If you select an item and type a period, the item appears followed by the period, which brings up another member list. When you select an item but before you insert it, you get [Quick Info](#quick-info) for the item.

In the member list, the icon to the left represents the member type, such as namespace, class, function, or variable. The list might be long, so you can press **PgUp** and **PgDn** to move up or down in the list.

:::image type="content" source="media/visualstudio/using-intellisense/intellisense-list-members.png" alt-text="Screenshot of IntelliSense list members feature.":::

::: moniker range=">=vs-2022"

:::image type="content" source="media/vs-2022/using-intellisense/intellisense-list-members.png" alt-text="Screenshot of IntelliSense list members feature.":::

::: moniker-end
You can invoke the List Members feature manually by typing **Ctrl**+**J**, choosing **Edit** > **IntelliSense** > **List Members**, or by choosing the **List Members** button on the editor toolbar. When you invoke it on a blank line or outside a recognizable scope, the list displays symbols in the global namespace.

You can invoke the List Members feature manually by typing **Ctrl**+**J**, choosing **Edit** > **IntelliSense** > **List Members**, or by choosing the **List Members** button on the editor toolbar. When it's invoked on a blank line or outside a recognizable scope, the list displays symbols in the global namespace.
::: moniker range="visualstudio"

To turn List Members off by default so that it doesn't appear unless specifically invoked, go to **Tools** > **Options** > **Text Editor** > **All Languages** and deselect **Auto list members**. If you want to turn off List Members only for a specific language, go to the **General** settings for that language.
To turn List Members off by default so that it doesn't appear unless specifically invoked, go to **Tools** > **Options** > **Text Editor** > **All Languages** and deselect **Auto list members**. To turn off List Members only for a specific language, go to **General** settings for that language.

::: moniker-end

::: moniker range=">=vs-2022"
::: moniker range="vs-2022"

You can also change to suggestion mode, in which only the text you type is inserted into the code. For example, if you enter an identifier that isn't in the list and press **Tab**, in completion mode the entry would replace the typed identifier. To toggle between completion mode and suggestion mode, press **Ctrl**+**Alt**+**Space**, or choose **Edit** > **IntelliSense** > **Switch between automatic and tab-only IntelliSense completion**.
To turn List Members off by default so that it doesn't appear unless specifically invoked, go to **Tools** > **Options** > **Languages** > **Defaults** > **General** > **Statement Completion** and deselect **Auto list members**. To turn off List Members only for a specific language, go to **General** settings for that language.

::: moniker-end

## Parameter Info

*Parameter Info* gives you information about the number, names, and types of parameters required by a method, attribute generic type parameter (in C#), or template (in C++).

The parameter in bold indicates the next parameter that is required as you type the function. For overloaded functions, you can use the **Up** and **Down** arrow keys to view alternative parameter information for the function overloads.
You can also change to suggestion mode, in which only the text you type is inserted into the code. For example, if you enter an identifier that isn't in the list and press **Tab**, in completion mode the entry replaces the typed identifier. To toggle between completion mode and suggestion mode, press **Ctrl**+**Alt**+**Space**, or choose **Edit** > **IntelliSense** > **Switch between automatic and tab-only IntelliSense completion**.

## Parameter Info

::: moniker range=">=vs-2022"
*Parameter Info* shows you the number, names, and types of parameters that a method, attribute generic type parameter (in C#), or template (in C++) needs.

:::image type="content" source="media/vs-2022/using-intellisense/intellisense-parameter-info.png" alt-text="Screenshot of the IntelliSense Parameter Info feature.":::
The parameter in bold shows the next parameter you need as you type the function. For overloaded functions, use the **Up** and **Down** arrow keys to see other parameter information for the function overloads.

::: moniker-end
:::image type="content" source="media/visualstudio/using-intellisense/intellisense-parameter-info.png" alt-text="Screenshot of the IntelliSense Parameter Info feature.":::

When you annotate functions and parameters with XML Documentation comments, the comments display as Parameter Info. For more information, see [Supply XML code comments](reference/generate-xml-documentation-comments.md).
When you add XML Documentation comments to functions and parameters, Parameter Info shows those comments. For more information, see [Supply XML code comments](reference/generate-xml-documentation-comments.md).

You can manually invoke Parameter Info by choosing **Edit** > **IntelliSense** > **Parameter Info**, by pressing **Ctrl**+**Shift**+**Space**, or by choosing the **Parameter Info** button on the editor toolbar.
You can manually open Parameter Info by choosing **Edit** > **IntelliSense** > **Parameter Info**, by pressing **Ctrl**+**Shift**+**Space**, or by choosing the **Parameter Info** button on the editor toolbar.

## Quick Info

*Quick Info* displays the complete declaration for any identifier in your code.

:::image type="content" source="media/visualstudio/using-intellisense/intellisense-quick-info.png" alt-text="Screenshot of the IntelliSense Quick Info feature.":::

::: moniker range=">=vs-2022"

:::image type="content" source="media/vs-2022/using-intellisense/intellisense-quick-info.png" alt-text="Screenshot of the IntelliSense Quick Info feature.":::
When you select a member from the List Members box, Quick Info also appears.

::: moniker-end
:::image type="content" source="media/visualstudio/using-intellisense/intellisense-quick-info-parameter-info.png" alt-text="Screenshot of the IntelliSense Quick Info and Parameter Info feature.":::

When you select a member from the List Members box, Quick Info also appears.
You can manually invoke Quick Info by choosing **Edit** > **IntelliSense** > **Quick Info**, by pressing **Ctrl**+**K**, **Ctrl**+**I**, or by choosing the **Quick Info** button on the editor toolbar.

If a function is overloaded, IntelliSense might not display information for all forms of the overload.

::: moniker range=">=vs-2022"
::: moniker range="visualstudio"

:::image type="content" source="media/vs-2022/using-intellisense/intellisense-quick-info-parameter-info.png" alt-text="Screenshot of the IntelliSense Quick Info and Parameter Info feature.":::
To turn Quick Info off, go to **Tools** > **Options** > **Text Editor** > **All Languages** and deselect **Show Quick Info on hover** in the **Settings** section.

::: moniker-end

You can manually invoke Quick Info by choosing **Edit** > **IntelliSense** > **Quick Info**, by pressing **Ctrl**+**K**, **Ctrl**+**I**, or by choosing the **Quick Info** button on the editor toolbar.
::: moniker range="vs-2022"

If a function is overloaded, IntelliSense might not display information for all forms of the overload.
To turn Quick Info off, go to **Tools** > **Options** > **Languages** and deselect **Show Quick Info on hover** in the **General** section.

You can turn Quick Info off for C++ code by navigating to **Tools** > **Options** > **Text Editor** > **C/C++** > **Advanced**, and setting **Auto Quick Info** to `false`.
::: moniker-end

## Complete Word

*Complete Word* completes the rest of a variable, command, or function name after you enter enough characters to disambiguate the term. You can invoke Complete Word by choosing **Edit** > **IntelliSense** > **Complete Word**, by pressing **Ctrl**+**Space**, or by choosing the **Complete Word** button on the editor toolbar.

## IntelliSense options

IntelliSense options are on by default. To turn them off, go to **Tools** > **Options** > **Text Editor** > **All Languages** and deselect **Parameter information** or **Auto list members** if you don't want the List Members feature.
IntelliSense options are on by default.

::: moniker range="visualstudio"

To turn them off, go to **Tools** > **Options** > **Languages** > **Defaults** > **General** > **Statement Completion** and deselect **Parameter information** or **Auto list members**.

::: moniker-end

::: moniker range="vs-2022"

To turn them off, go to **Tools** > **Options** > **Text Editor** > **All Languages** and deselect **Parameter information** or **Auto list members**.

::: moniker-end

> [!TIP]
> If you want to change the appearance of user interface elements in Visual Studio, go to **Tools** > **Options** > **Environment** > **Fonts and Colors**. For more information about these settings and how to interact with them, see [Fonts and Colors, Environment, Options dialog box](reference/fonts-and-colors-environment-options-dialog-box.md).
> To change the appearance of user interface elements in Visual Studio, go to **Tools** > **Options** > **Environment** > **Fonts and Colors**. For more information about these settings and how to interact with them, see [Fonts and Colors, Environment, Options dialog box](fonts-and-colors-environment-options-dialog-box.md).

## IntelliSense icons

The icons in IntelliSense can convey additional meaning with icon modifiers. These are stars, hearts, and locks layered on top of the object's icon that convey protected, internal, or private, respectively.
The icons in IntelliSense convey additional meaning through icon modifiers. These icons include stars, hearts, and locks layered on top of the object's icon that convey protected, internal, or private, respectively.

:::moniker range="visualstudio"

| Icon | Accessibility | Description |
|------------|---------------------|-------------------|
| ![Public Icon Modifier](../ide/media/visualstudio/intellisense-public-no-modifier.png) | Public class | Access is not restricted. |
| ![Public Icon Modifier](../ide/media/visualstudio/intellisense-public-no-modifier.png) | Public class | Access isn't restricted. |
| ![Protected Icon Modifier](../ide/media/visualstudio/intellisense-protected-modifier.png) | Protected class | Access is limited to the containing class or types derived from the containing class. |
| ![Protected Internal Icon Modifier](../ide/media/visualstudio/intellisense-protected-modifier.png) | Protected internal class | Access is limited to the current assembly or types derived from the containing class. |
| ![Internal Icon Modifier](../ide/media/visualstudio/intellisense-internal-modifier.png) | Internal class | Access is limited to the current assembly. |
Expand All @@ -126,7 +135,7 @@ The icons in IntelliSense can convey additional meaning with icon modifiers. The

| Icon | Accessibility | Description |
|------------|---------------------|-------------------|
| ![Public Icon Modifier](../ide/media/intellisensePublicNoModifier.png) | Public class | Access is not restricted. |
| ![Public Icon Modifier](../ide/media/intellisensePublicNoModifier.png) | Public class | Access isn't restricted. |
| ![Protected Icon Modifier](../ide/media/intellisenseProtectedModifier.png) | Protected class | Access is limited to the containing class or types derived from the containing class. |
| ![Protected Internal Icon Modifier](../ide/media/intellisenseProtectedInternalModifier.png) | Protected internal class | Access is limited to the current assembly or types derived from the containing class. |
| ![Internal Icon Modifier](../ide/media/intellisenseInternalModifier.png) | Internal class | Access is limited to the current assembly. |
Expand All @@ -152,6 +161,7 @@ The IntelliSense options might not work as you expect in certain cases.

## Related content

- [Get started with GitHub Copilot](visual-studio-github-copilot-get-started.md)
- [C# IntelliSense](../ide/visual-csharp-intellisense.md)
- [Visual Basic IntelliSense](../ide/visual-basic-specific-intellisense.md)
- [JavaScript IntelliSense](../ide/javascript-intellisense.md)
Expand Down
Loading