Megosztás a következőn keresztül:


Lapkiegészítés engedélyezése a .NET CLI-hez

Ez a cikk a következő verziókra vonatkozik: ✔️ .NET 6 SDK és újabb verziók

Ez a cikk ismerteti, hogyan konfigurálható a tabulátor kiegészítés öt shellhez: PowerShell (pwsh), Bash, zsh, fish és nushell. Más shell-ek esetén olvassa el a dokumentációt a tab kiegészítés konfigurálásának módjáról.

Natív parancshéj-befejezési szkriptek (.NET 10+)

A .NET 10-től kezdve a .NET CLI natív felületkiegészítési szkripteket tartalmaz, amelyek sokkal gyorsabban futnak, mint a korábbi verziókban elérhető dinamikus kiegészítések. A natív befejezések olyan rendszerhéjspecifikus szkripteket hoznak létre, amelyek közvetlenül a rendszerhéjban kezelik a CLI-nyelvhelyesség statikus részeit, ami jelentős teljesítménybeli javulást eredményez.

Befejezési szkriptek létrehozása

dotnet completions script parancs használatával hozzon létre egy kiegészítő szkriptet a parancsértelmezőhöz.

dotnet completions script [SHELL]

A [SHELL] paraméter a következő értékek egyikét fogadja el:

  • bash
  • fish
  • nushell
  • pwsh
  • zsh

Ha nem ad meg parancsértelmezőt, a parancs megállapítja a megfelelő parancsértelmezőt a környezetből. Windows rendszeren alapértelmezés szerint a PowerShell (pwsh). Más rendszereken ellenőrzi, hogy a SHELL környezeti változó fájlneve megegyezik-e a támogatott rendszerhéjértékek bármelyikével.

Befejezési képességek

A natív kiegészítések különböző támogatási szinteket biztosítanak a rendszerhéjtól függően:

Shell Befejezés típusa Leírások a lapkiegészítésekben
bash hibrid Nem
hal dynamic Nem
nushell dynamic Nem
PowerShell hibrid Igen
zsh hibrid Igen

Befejezési típusok:

  • Hibrid: Olyan rendszerhéj-specifikus kódot hoz létre, amely gyorsan kezeli a CLI nyelvtan statikus részeit, de a dinamikus tartalomhoz (például NuGet-csomagazonosítókhoz) visszatér a dotnet complete parancsra.
  • Dinamikus: Minden befejezés végighalad a dotnet complete parancson, ami lassabb lehet, de átfogó lefedettséget biztosít.

Shellok konfigurálása natív kiegészítések használatára

Adja hozzá a shell profiljához a megfelelő parancsot a natív kiegészítések engedélyezéséhez:

PowerShell

Adja hozzá a következő sort a PowerShell-profilhoz ($PROFILE):

dotnet completions script pwsh | Out-String | Invoke-Expression

Bash

Adja hozzá a következő sort a .bashrc fájlhoz:

eval "$(dotnet completions script bash)"

Zsh

Adja hozzá a következő sort a .zshrc fájlhoz:

eval "$(dotnet completions script zsh)"

Hal

Adja hozzá a következő sort a config.fish fájlhoz:

dotnet completions script fish | source

Nushell

Adja hozzá a következőket a config.nu fájl elejéhez:

dotnet completions script nushell | save -f ~/.local/share/nushell/completions/dotnet.nu
use ~/.local/share/nushell/completions/dotnet.nu *

Dinamikus befejezési szkriptek (minden verzió)

A .NET 10 előtti .NET-verziók esetében, vagy ha inkább dinamikus kiegészítéseket szeretne használni, konfigurálhatja a rendszerhéjat a dotnet complete parancs használatára. A dinamikus befejezések úgy működnek, hogy elküldik az aktuális parancssort a dotnet complete parancsnak, majd a kapott eredményeket a parancshéjban dolgozzák fel.

Miután a beállítást elvégeztük, a .NET CLI tabulátorkiegészítése a parancssorban egy dotnet parancs beírásával, majd a Tab billentyű lenyomásával aktiválható. A rendszer elküldi az aktuális parancssort a dotnet complete parancsnak, és az eredményeket a rendszerhéj dolgozza fel. A tabulátor befejezésének engedélyezése nélkül is tesztelheti az eredményeket, ha közvetlenül a dotnet complete parancsnak küld valamit. Például:

> dotnet complete "dotnet a"
add
clean
--diagnostics
migrate
pack

Ha ez a parancs nem működik, győződjön meg arról, hogy a .NET Core 2.0 SDK vagy újabb verzió telepítve van. Ha telepítve van, de a parancs továbbra sem működik, győződjön meg arról, hogy a parancs a dotnet .NET Core 2.0 SDK vagy újabb verziójára lesz feloldva. A dotnet --version parancs használatával megnézheti, hogy az aktuális elérési út milyen verzióra van feloldva dotnet. További információ: Válassza ki a használni kívánt .NET-verziót.

Példák

Íme néhány példa arra, mit nyújt a tabulátorkiegészítés:

Bemenet Lesz Mert
dotnet a⇥ dotnet add add betűrendben az első alparancs.
dotnet add p⇥ dotnet add --help A tabulátorkiegészítés alsztringeket egyeztet, és --help betűrendben kerül ki elsőként.
dotnet add p⇥⇥ dotnet add package A tabulátor második lenyomásával megjelenik a következő javaslat.
dotnet package add Microsoft⇥ dotnet package add Microsoft.ApplicationInsights.Web Az eredmények betűrendben jelennek meg.
dotnet reference remove ⇥ dotnet reference remove ..\..\src\OmniSharp.DotNet\OmniSharp.DotNet.csproj A tabulátor kitöltése a projektfájlt ismeri.

PowerShell

A .NET CLI-hez készült PowerShell lapkiegészítés hozzáadásához hozza létre vagy szerkessze a változóban $PROFILEtárolt profilt. További információért lásd: A profil létrehozása és Profilok és végrehajtási szabályzat.

Adja hozzá a következő kódot a profiljához:

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

bash

Ha a .NET CLI-hez tartozó bash-felülethez tabulátorkitöltést szeretne hozzáadni, adja hozzá a következő kódot a .bashrc fájlhoz:

# bash parameter completion for the dotnet CLI

function _dotnet_bash_complete()
{
  local cur="${COMP_WORDS[COMP_CWORD]}" IFS=$'\n' # On Windows you may need to use use IFS=$'\r\n'
  local candidates

  read -d '' -ra candidates < <(dotnet complete --position "${COMP_POINT}" "${COMP_LINE}" 2>/dev/null)

  read -d '' -ra COMPREPLY < <(compgen -W "${candidates[*]:-}" -- "$cur")
}

complete -f -F _dotnet_bash_complete dotnet

zsh

Ha szeretne tabulátorkitöltést hozzáadni a zsh shelljéhez a .NET CLI-hez, illessze be a következő kódot a .zshrc fájlba:

# zsh parameter completion for the dotnet CLI

_dotnet_zsh_complete()
{
  local completions=("$(dotnet complete "$words")")

  # If the completion list is empty, just continue with filename selection
  if [ -z "$completions" ]
  then
    _arguments '*::arguments: _normal'
    return
  fi

  # This is not a variable assignment, don't remove spaces!
  _values = "${(ps:\n:)completions}"
}

compdef _dotnet_zsh_complete dotnet

hal

Ha a .NET CLI-hez tartozó halhéjhoz tabulátorkitöltést szeretne hozzáadni, adja hozzá a következő kódot a config.fish fájlhoz:

complete -f -c dotnet -a "(dotnet complete (commandline -cp))"

nushell

Ha a .NET CLI-hez tartozó nushellhez tabulátorkitöltést szeretne hozzáadni, adja hozzá a következőt a config.nu fájl elejéhez:

let external_completer = { |spans|
    {
        dotnet: { ||
            dotnet complete (
                $spans | skip 1 | str join " "
            ) | lines
        }
    } | get $spans.0 | each { || do $in }
}

Ezután keresse meg a config szakaszt a completions rekordban, és adja hozzá a korábban definiált external_completer-t a external-hoz.

let-env config = {
    # your options here
    completions: {
        # your options here
        external: {
            # your options here
            completer: $external_completer # add it here
        }
    }
}