about_Tab_Expansion

Kort beskrivning

PowerShell tillhandahåller kompletteringar av indata för att ge tips, aktivera identifiering och påskynda inmatning. Kommandonamn, parameternamn, argumentvärden och filsökvägar kan slutföras genom att trycka på tabbtangenten.

Lång beskrivning

Flikexpansion styrs av den interna funktionen TabExpansion2. Eftersom den här funktionen kan ändras eller åsidosättas är den här diskussionen en guide till beteendet för powershell-standardkonfigurationen.

Flikexpansionsbeteende kan också ändras av funktionen Predictive IntelliSense i PSReadLine-modulen. Mer information finns i Predictive IntelliSense.

Tabbnyckeln är standardnyckelbindningen i Windows. Du kan ändra nyckelbindningen med hjälp av PSReadLine-modulen eller programmet som är värd för PowerShell. Nyckelbindningen skiljer sig från Windows-plattformar. Mer information finns i about_PSReadLine.

Kommentar

En begränsning i flikexpansionsprocessen är att flikar alltid tolkas som försök att slutföra ett ord. Om du kopierar och klistrar in kommandoexempel i en PowerShell-konsol kontrollerar du att exemplet inte innehåller flikar. Om det gör det kommer resultaten att vara oförutsägbara och kommer nästan säkert inte att vara vad du avsåg.

Fil- och cmdlet-namn har slutförts

Om du vill fylla i ett filnamn eller sökväg från de tillgängliga alternativen automatiskt skriver du en del av namnet och trycker på tabbtangenten. PowerShell expanderar automatiskt namnet till den första matchningen som hittas. Om du trycker på tabbtangenten upprepade gånger går du igenom alla tillgängliga alternativ.

Flikexpansionen av cmdlet-namn skiljer sig något. Om du vill använda flikexpansion på ett cmdlet-namn skriver du hela den första delen av namnet (verbet) och bindestrecket som följer. Du kan fylla i mer av namnet för en partiell matchning. Om du till exempel skriver get-co och sedan trycker på tabbtangenten expanderar PowerShell automatiskt detta till cmdletenGet-Command. Observera att det också ändrar fallet med bokstäver till deras standardformulär. Om du trycker på Tabb igen ersätter PowerShell detta med det enda andra matchande cmdletnamnet, Get-Content.

Kommentar

Från och med PowerShell 7.0 expanderar Tab även förkortade cmdletar och funktioner. Returnerar i-psdf<tab>Import-PowerShellDataFiletill exempel .

Tabbavslut fungerar också för att lösa PowerShell-alias och inbyggda körbara filer.

Du kan använda flikexpansion upprepade gånger på samma rad. Du kan till exempel använda flikexpansion på namnet på cmdleten Get-Content genom att ange:

Exempel

PS> Get-Con<Tab>

När du trycker på tabbtangenten expanderas kommandot till:

PS> Get-Content

Du kan sedan delvis ange sökvägen till loggfilen för aktiv installation och använda flikexpansionen igen:

PS> Get-Content c:\windows\acts<Tab>

När du trycker på tabbtangenten expanderas kommandot till:

PS> Get-Content C:\windows\actsetup.log

PSReadLine har också en funktion för att slutföra menyn. Standardnyckelbindningen i Windows är Ctrl-blanksteg+.

PS> fore<Ctrl-Space>

När du trycker på Ctrl-blanksteg+ visar PowerShell den fullständiga listan med matchande värden som en meny:

PS> foreach
foreach         ForEach-Object  foreach.cmd

I det här exemplet matchas strängen "fore" till foreach (PowerShell-alias), ForEach-Object (cmdlet) och foreach.cmd (internt kommando). Använd piltangenterna för att välja önskat värde.

Slutförande av parameterargument

Tabbavslut kan också fungera för att slutföra parameterargument. Du kan använda tabbnyckeln för att bläddra igenom en lista över möjliga värden som är giltiga för någon parameter. Mer information finns i about_Functions_Argument_Completion.

Uppräknat värde har slutförts

PowerShell 7.0 har lagt till stöd för att tabbarna ska slutföras. Du kan använda tabbavslut för att välja det värde du vill ha var du än använder en uppräkning. Till exempel:

enum Suits {
    Clubs = 0
    Diamonds = 1
    Hearts = 2
    Spades = 3
}

[Suits]$suit = 'c<Tab>

Uppräknade värden är strängar, så värdet som ska slutföras måste börja med ett enda eller dubbelt citattecken.

När du trycker på tabbtangenten får du följande resultat:

[Suits]$suit = 'Clubs'

Tabbavslut fungerar också med .NET-uppräkningar.

[System.IO.FileAttributes]$attr = 'S<Tab><Tab>

Om du trycker på tabbtangenten två gånger går du igenom de två värden som börjar med bokstaven S. Slutresultatet är:

[System.IO.FileAttributes]$attr = 'System'

Från och med PowerShell 7.0 lades flikexpansion till för värdena ValidateSet för när du tilldelar till en variabel. Om du till exempel skrev följande variabeldefinition:

[ValidateSet('Chocolate', 'Strawberry', 'Vanilla')]
[string]$flavor = 'Strawberry'
$flavor = <tab>

När du trycker på tabbtangenten får du följande resultat:

$flavor = 'Chocolate'

Tabbslutningar för kommentarsbaserade nyckelord

Från och med PowerShell 7.2 har stöd lagts till för att tabbavsluta parametrarna #requires och nyckelorden för kommentarsbaserad hjälp.

Exempel på #requires instruktion

#requires -<Ctrl-Space>

Menyexpansion visar följande parameteralternativ:

#requires -<Ctrl-Space>
Modules     PSEdition     RunAsAdministrator    Version

Exempel på kommentarsbaserad hjälp

<#
    .<Ctrl-Space>

Menyexpansion visar följande nyckelordsalternativ:

 <#
    .COMPONENT
COMPONENT      EXTERNALHELP           FUNCTIONALITY     NOTES         REMOTEHELPRUNSPACE
DESCRIPTION    FORWARDHELPCATEGORY    INPUTS            OUTPUTS       ROLE
EXAMPLE        FORWARDHELPTARGETNAME  LINK              PARAMETER     SYNOPSIS

Se även