如何為 .NET Core CLI 啟用 TAB 自動補全功能


如何為 .NET Core CLI 啟用 TAB 自動補全功能

Intro

在 Linux 下經常可以發現有些目錄/文件名,以及有些工具可以命令輸入幾個字母之后按 TAB 自動補全,最近發現其實 dotnet cli 也可以,從.NET Core 2.0 SDK 開始,NET Core CLI 支持 tab 自動補全。你如果已經裝了 dotnet Core Sdk,但是不知道版本,可以在命令行中輸入 dotnet --info 來查看版本信息。

使用示例

下面是 tab 自動補全提供的一些示例:

輸入 將變為 因為
dotnet a⇥ dotnet add add 是第一項子命令,按字母排序。
dotnet add p⇥ dotnet add --help Tab 自動補全匹配子字符串,--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.csproj Tab 自動補全是可識別的項目文件。

啟動 TAB 自動補全功能

Powershell

要將 tab 自動補全添加到適用於 .NET Core CLI 的 PowerShell,請創建或編輯存儲在變量 $PROFILE 中的配置文件。 有關詳細信息,請參閱如何創建配置文件配置文件和執行策略

在 Powershell 中執行 notepad $profile 命令,會打開 $profile 配置文件,如果不能保存請嘗試用管理員模式的powershell中執行。

將以下代碼添加到配置文件中:

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

如果想看 $profile 配置文件,可以打開 %USERPROFILE%\Documents\WindowsPowerShell 目錄,
在這個目錄下會有一個 Microsoft.PowerShellISE_profile.ps1 的文件,這就是上面的配置文件

Bash

要將 tab 自動補全添加到適用於 .NET Core CLI 的 bash shell,請將以下代碼添加到 .bashrc 文件:

vi ~/.bashrc
# bash parameter completion for the dotnet CLI

_dotnet_bash_complete()
{
  local word=${COMP_WORDS[COMP_CWORD]}

  local completions
  completions="$(dotnet complete --position "${COMP_POINT}" "${COMP_LINE}")"

  COMPREPLY=( $(compgen -W "$completions" -- "$word") )
}

complete -f -F _dotnet_bash_complete dotnet

使用一下

實際使用的效果就如上面的示例一般,如輸入一個 dotnet a,然后按一下 TAB 鍵,命令就會自動補充為 dotnet add ,其他的命令就自己去嘗試一下吧~~

如此好用的功能還不快快啟用~

Reference


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM