Skip to content

Add information on using the native shell completions in .NET 10+ #46935

@baronfel

Description

@baronfel

Type of issue

Typo

Description

This page needs content about the new built-in tab completion scripts for shells: https://github.com/dotnet/core/blob/main/release-notes/10.0/preview/preview3/sdk.md#native-shell-completion-scripts

We should lean into these over the older, dynamic completions as they are much faster.

> dotnet completions generate [SHELL]
... lots of shell-specific script emitted here...

The shell argument is one of the following shell names:

  • bash
  • fish
  • nushell
  • pwsh
  • zsh

If no shell is specified, we will try to infer the correct shell from the current execution environment -

  • if Windows, default to pwsh
  • otherwise, see if the file name of the SHELL environment variable matches any of the shells above

Capabilities

The primary reason to do this is speed. Native shell completions are much faster than dynamic, dotnet-provided completions.

We have differing levels of support/capabilities for each shell in this release:

hybrid means that we generate shell-specific shims that are fast for the 'static' parts of the CLI grammar, but for dynamic parts of the grammar (NuGet Package Ids, etc) we ask the dotnet CLI for dynamic completions

dynamic means that all completions go through the full dotnet CLI, so completions may be slower

shell completion type support for descriptions in tab completions
bash hybrid no
fish dynamic no
nushell dynamic no
powershell hybrid yes
zsh hybrid yes

We'll want to document shell-specific examples of including these generation+registration scripts in each shell's equivalent of the $PROFILE.

For example, for powershell this might look something like adding this to your $PROFILE:

dotnet completions script pwsh | out-String | Invoke-Expression -ErrorAction SilentlyContinue

Page URL

https://learn.microsoft.com/en-us/dotnet/core/tools/enable-tab-autocomplete

Content source URL

https://github.com/dotnet/docs/blob/main/docs/core/tools/enable-tab-autocomplete.md

Document Version Independent Id

f30f63dc-0d90-7dba-ef39-b0148c637c1a

Platform Id

d808fba8-f906-9fc9-f8fd-8fe8bca5bdf8

Article author

@adegeo

Metadata

  • ID: 341f0255-aa31-8e76-9b17-1232b7a910a9
  • PlatformId: d808fba8-f906-9fc9-f8fd-8fe8bca5bdf8
  • Service: dotnet-fundamentals

Related Issues


Associated WorkItem - 498950

Metadata

Metadata

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions