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-PowerShellDataFile
till 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