Ich liebe Powershell, aber mit einem Linux-Hintergrund gibt es ein paar Dinge, die mich wirklich nerven. Wie zum Beispiel, wie die standardmäßige automatische Vervollständigung funktioniert.
Beispiel: Get-PS wird zu "Get-PSBreakpoint" erweitert, dem ersten übereinstimmenden Befehl. Wenn es in bash nur einen passenden Befehl gibt, wird bash zum passenden Befehl erweitert. Wenn es mehrere Treffer gibt, führt ein doppeltes Tippen auf die Registerkarte zu einer Liste übereinstimmender Befehle, die jedoch nicht erweitert werden. Gibt es eine Möglichkeit, Powershell so zu machen?
Und eine andere Sache, wenn ich eine Zeile geschrieben habe und den Marker zurück zu einem früheren Befehl verschiebe (Marker ist dort, wo das ^ ist):
"Get-PSS ^ | Remove-PSSession" wird automatisch zu "Get-PSSession ^" vervollständigt, wobei alle nachfolgenden Befehle entfernt werden. In der Bash wären die nachfolgenden Befehle dort noch nicht betroffen. Gibt es eine Möglichkeit, Powershell zu veranlassen, die nachfolgenden Befehle bei der automatischen Vervollständigung nicht zu entfernen?
Ein Bonus wäre STRG + L, um den Bildschirm zu löschen. STRG + A, um zum Zeilenanfang zu gelangen, und STRG + E, um zum Zeilenende zu gelangen.
quelle
Antworten:
Check out PSReadline .
Aus dem Artikel:
Ich benutze es täglich!
quelle
Set-PSReadlineKeyHandler -Key Tab -Function Complete
CompleteMenu
stattComplete
für eine bash-ähnliche Erfahrung, können Sie die Pfeiltasten verwenden, um die Auswahl zu navigierenVielleicht sollten Sie einen Blick auf Powertab werfen , eine anpassbare PowerShell Tab-Erweiterung.
quelle
Hallo Peter drücken Sie einfach F8 für so etwas wie Speed. Es wird mit den Befehlen vervollständigt, die Sie zuvor ausgeführt haben und die mit dem beginnen, was Sie in der Zeile haben. Das Problem mit dem Löschen des Trailings ist ärgerlich, ich schreibe in Connect einen Vorschlag zum selben Thema. In der Hauptzeit könnten Sie Powershell ISE verwenden, das sich etwas besser verhält (die nachfolgenden Zeichen nicht löschen).
quelle
Das alte Subsystem command.exe ist immer noch in PowerShell involviert und erzwingt viele unangenehme Verhaltensweisen. Ab PowerShell v3 ist die grafische Benutzeroberfläche (PowerShell ISE) jetzt verwendbar und bietet eine viel modernere Vervollständigungserfahrung und Kolorierung.
quelle
PowerShell verwendet dieselben Konsolenfunktionen wie die ehrwürdige Eingabeaufforderung. Sie haben also das übliche Zuhause / Ende und:
... aber meines Wissens gibt es keine Möglichkeit, alle möglichen Vervollständigungen anzuzeigen.
quelle
Reguläre Powershell verwendet cmd als Eingabeaufforderungsfenster. Das ist der Grund, warum es ein riesiges Erbe gibt (Programme geben das Verhalten von alten cmd seit Ewigkeiten wieder), das aufgrund der Rückwärtsvergleichbarkeit nicht geändert werden kann.
Ich empfehle, dass Sie Powershell_ise anstelle von Powershell verwenden (im Standard-Powershell-Bundle enthalten). Version 3.0 (ich bin mir nicht sicher) unterstützt Intellisense von Anfang an. Dies ist sehr nahe an der Bash-Fertigstellung. Drücken Sie einfach Strg + Leertaste anstelle der Tabulatortaste. Ich habe Probleme mit benutzerdefinierten Vervollständigungen auf PowerTab, aber Intellisense funktioniert einwandfrei. Powershell_ise behält auch nachfolgende Befehle bei, verfügt über einen normalen Auswahlmodus und unterstützt Strg + C, Strg + V, Strg + A für die Auswahl des eingegebenen Befehls /Ende).
quelle
PowerShell verwendet einen eigenen Parser für Befehle. In gewissem Sinne handelt es sich also um eine andere Shell als cmd.exe, obwohl sie dasselbe Terminal (GUI-Fenster) verwenden.
Aufgrund dieses Unterschieds können Sie in PowerShell die Tab-Vervollständigungsfunktion mit Ihrer eigenen Funktion überschreiben. Ich hatte selbst keine Zeit, mich damit zu beschäftigen, aber Sie überschreiben im Grunde die Funktion
tabexpansion
in Ihrem Profil, genauso wie Sie dieprompt
Funktion überschreiben können.Ich habe diesen Artikel von Lee Holmes (Autor des großartigen Windows PowerShell-Kochbuchs ) gefunden, der eine Tab-Erweiterungsüberschreibung beschreibt, die dem sehr ähnlich ist, wonach Sie suchen. Sie könnten es wahrscheinlich optimieren, um genau das zu erhalten, was Sie wollen.
quelle