如何为 .NET Core CLI 启用 TAB 自动补全功能How to enable TAB completion for .NET Core CLI

本文内容

从.NET Core 2.0 SDK 开始,NET Core CLI 支持 tab 自动补全。本文介绍如何为三个 shell、PowerShell、Bash 和 zsh 配置 tab 自动补全。其他 shell 可能支持自动补全功能。请参阅有关如何配置自动补全功能的文档,这些步骤应与本文中介绍的步骤类似。

本文适用于:✓ .NET Core 2.x SDK

设置完成后,通过在 shell 中键入 dotnet 命令,然后按下 TAB 键来触发 .NET Core CLI 的 tab 自动补全。当前命令行将发送到 dotnet complete 命令,结果将由 shell 处理。可以通过直接向 dotnet complete 命令发送内容来测试结果而无需启用 tab 自动补全。例如:

  1. > dotnet complete "dotnet a"
  2. add
  3. clean
  4. --diagnostics
  5. migrate
  6. pack

如果该命令不起作用,请确保已安装 .NET Core 2.0 SDK 或更高版本。如果已安装,但该命令仍不起作用,请确保 dotnet 命令解析为 .NET Core 2.0 SDK 及更高版本。使用 dotnet —version 命令查看当前路径解析为的 dotnet 的版本。有关详细信息,请参阅选择要使用的 .NET Core 版本页面。

示例Examples

下面是 tab 自动补全提供的一些示例:

输入将变为因为
dotnet a⇥dotnet addadd 是第一项子命令,按字母排序。
dotnet add p⇥dotnet add —helpTab 自动补全匹配子字符串,—help 首先按字母顺序排列。
dotnet add p⇥⇥dotnet add package第二次按 Tab 将显示下一条建议。
dotnet add package Microsoft⇥dotnet add package Microsoft.ApplicationInsights.Web结果按字母顺序返回。
dotnet remove reference ⇥dotnet remove reference ....\src\OmniSharp.DotNet\OmniSharp.DotNet.csprojTab 自动补全是可识别的项目文件。

PowerShellPowerShell

要将 tab 自动补全添加到适用于 .NET Core CLI 的 PowerShell,请创建或编辑存储在变量 $PROFILE 中的配置文件 。有关详细信息,请参阅如何创建配置文件配置文件和执行策略

将以下代码添加到配置文件中:

  1. # PowerShell parameter completion shim for the dotnet CLI
  2. Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock {
  3. param($commandName, $wordToComplete, $cursorPosition)
  4. dotnet complete --position $cursorPosition "$wordToComplete" | ForEach-Object {
  5. [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
  6. }
  7. }

BashBash

要将 tab 自动补全添加到适用于 .NET Core CLI 的 bash shell,请将以下代码添加到 .bashrc 文件:

  1. # bash parameter completion for the dotnet CLI
  2. _dotnet_bash_complete()
  3. {
  4. local word=${COMP_WORDS[COMP_CWORD]}
  5. local completions
  6. completions="$(dotnet complete --position "${COMP_POINT}" "${COMP_LINE}")"
  7. COMPREPLY=( $(compgen -W "$completions" -- "$word") )
  8. }
  9. complete -f -F _dotnet_bash_complete dotnet

ZshZsh

要将 tab 自动补全添加到适用于 .NET Core CLI 的 zsh shell,请将以下代码添加到 .zshrc 文件:

  1. # zsh parameter completion for the dotnet CLI
  2. _dotnet_zsh_complete()
  3. {
  4. local completions=("$(dotnet complete "$words")")
  5. reply=( "${(ps:\n:)completions}" )
  6. }
  7. compctl -K _dotnet_zsh_complete dotnet