Freigeben über


Tab-Vervollständigung (winget)

Das Winget-Befehlszeilentool bietet einen complete Befehl, um kontextabhängige Tabulator-Autovervollständigung zu ermöglichen. Er unterstützt den Abschluss von Befehlsnamen, Argumentnamen und Argumentwerten, abhängig vom aktuellen Befehlszeilenzustand.

Tab-Vervollständigung aktivieren

Um die Tab-Vervollständigung mit winget zu aktivieren, müssen Sie im PowerShell Ihrem $PROFILE das folgende Skript hinzufügen.

  1. Öffnen Sie PowerShell und geben Sie den folgenden Befehl ein, um Ihre $PROFILE im Editor zu öffnen: notepad.exe $PROFILE

  2. Kopieren Sie das folgende Skript, und fügen Sie es in die Datei $PROFILE ein, die im Editor geöffnet wurde.

    Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock {
        param($wordToComplete, $commandAst, $cursorPosition)
            [Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new()
            $Local:word = $wordToComplete.Replace('"', '""')
            $Local:ast = $commandAst.ToString().Replace('"', '""')
            winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object {
                [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
            }
    }
    
  3. Speichern Sie die $PROFILE mit Ihrem Skript. Schließen Sie dann PowerShell, und öffnen Sie sie erneut. Sobald PowerShell erneut geöffnet wurde, ist die winget Tab-Vervollständigung aktiviert.

Beispiele für die Tab-Vervollständigung

Wiederholtes Drücken der Tabulatortaste () führt zum Wechseln zwischen den möglichen Werten.

Eingabe Ergebnis Ursache
winget ⇥ winget install install ist der erste Befehl unterhalb des Stamms.
winget sh⇥ winget show show ist der erste Befehl, der mit sh beginnt.
winget source l⇥ winget source list list ist der erste Unterbefehl der Quelle, der mit l beginnt.
winget -⇥ winget --version --version ist das erste Argument, das für den Stamm definiert ist.
winget install power⇥ winget install "Power Toys" "Power Toys" ist das erste Paket, dessen ID, Name oder Moniker mit power beginnt.
winget install "Power Toys" --version ⇥ winget install "Power Toys" --version 0.19.2 0.19.2 ist die höchste Version von Power Toys zum Zeitpunkt des Schreibens

Befehlsreferenz

Der vollständige Befehl akzeptiert drei erforderliche Argumente:

Streitpunkt BESCHREIBUNG
--word Das aktuelle Wort, das vervollständigt wird; das Token, in dem sich der Cursor befindet. Kann leer sein, um keinen aktuellen Wert am Cursor anzugeben, aber falls angegeben, muss er als Teilzeichenfolge in der Befehlszeile angezeigt werden.
--commandline Die gesamte aktuelle Befehlszeile, einschließlich winget. Siehe die obigen Beispiele; alles außer dem Tabstoppzeichen () sollte an dieses Argument übergeben werden.
--position Die aktuelle Position des Cursors in der Befehlszeile. Kann größer als die Länge der Befehlszeilenzeichenfolge sein, die am Ende angegeben werden soll.

Wenn ein Textwert angegeben wird, erfolgt die Vervollständigung durch Ersetzen. Es werden Vervollständigungen vorgeschlagen, die an dieser Stelle korrekt passen und mit dem angegebenen Wort beginnen.

Wenn kein Wert für ein Wort angegeben wird (z. B. ein leerer Wert wie --word=), wird der Abschluss im Einfügemodus ausgeführt. Es schlägt Vervollständigungen vor, die als neuer Wert an die Position des Cursors passen würden.

Basierend auf den Argumenten kann eine der vorgeschlagenen Vervollständigungen die folgende sein:

  1. Ein Unterbefehl :: Der Cursor befindet sich direkt hinter einem Befehl, und es stehen Unterbefehle zur Verfügung.
  2. Ein Argumentbezeichner :: Der Cursor wird nicht nach einem Argumentbezeichner positioniert, der einen Wert erwartet, und es sind Argumente verfügbar.
  3. Argumentwert :: Der Cursor wird nach einem Argumentbezeichner positioniert, der einen Wert erwartet, oder ein Positionsargument wird erwartet.

Nach der Auswertung all dieser Fälle werden die potenziellen Fertigstellungen ausgegeben, eine in jeder Zeile. Wenn die Abschlusszeichenfolge ein Leerzeichen enthält, wird sie in Anführungszeichen eingeschlossen.