
Gibt es eine Möglichkeit, Vim-Tastenkombinationen in Powershell zu erhalten, wie Sie es in Bash oder Zsh mit einem Befehl wie
set -o vi
Antwort1
Heutzutage haben Sie mehrere Möglichkeiten. Mit der Standardkonsole können Sie Vim einfach unter Windows ausführen (möglicherweise haben Sie es bereits, wenn Sie Git oder andere Tools installiert haben). Um die Integration nahtloser zu gestalten, fügen Sie Folgendes in Ihr PowerShell-Profil ein:
$VIMEXEPATH = "c:\<location>\vim.exe"
Set-Alias vim $VIMEXEPATH
Set-Alias vi $VIMEXEPATH
Ich würde außerdem empfehlen, Ihrer Datei Folgendes hinzuzufügen, vimrc
damit Shell-Befehle mit PowerShell selbst ausgeführt werden.
set shell=powershell
set shellcmdflag=-command
Ansonsten ist die einzige ISE, die derzeit einen Vi-Modus unterstützt,PSReadLinejetzt verfügbar auf derPS-Galerie
Es gibtVerwendungshinweiseaber kurz gesagt müssen Sie für den VI-Modus die folgende Zeile zu Ihrem ISE-Profil hinzufügen.
Set-PSReadlineOption -EditMode vi
Beachten Sie, dass Vi-Unterstützung in 1.2 hinzugefügt wurde, 1.1 jedoch mit Windows 10 ausgeliefert wurde. Sie müssen den Parameter -force verwenden, um die Versandversion (d. h. manuell installierte Version) zu aktualisieren.
Antwort2
Das PSReadline-Modul bietet dies.
Die Installation ist einfach, ich bin mir nicht sicher, welche Voraussetzungen erforderlich sind, aber ich denke, dass für diese Methode mindestens Windows 10 erforderlich ist. Wenn Sie OneGet nicht haben oder sich nicht sicher sind, können Sie den Anweisungen unter folgen.PSReadline
So installieren Sie PSReadline ohne Rechteerhöhung
Install-Module PsReadline -Scope CurrentUser
Überprüfen Sie, ob Sie ein Powershell-Profil haben
Test-Path $PROFILE
Wenn Sie keins erstellen
New-Item -Type File $PROFILE
Öffnen Sie $PROFILE in ISE
ise $PROFILE
Fügen Sie diese Zeile hinzu
Set-PSReadlineOption -EditMode vi
Laden Sie $PROFILE neu oder starten Sie Powershell einfach neu.
& $PROFILE
Antwort3
Ich würde nicht schwören, dass es keine undokumentierte Funktion von Powershell gibt, die dies ermöglicht, aber meines Wissens lautet die Antwort nein. Zumindest habe ich in der Powershell-Dokumentation nie etwas gesehen, das darauf hindeutet, dass es möglich ist.
JR
Antwort4
Die Powershell-Engine bietet jetzt die Hooks, um dies relativ unkompliziert zu machen, aber ich kenne niemanden, der das bisher gemacht hat.
Das PSReadln-Projekt verfügt über einen Emergenz-Emacs-Modus, der sich jedoch noch in der Anfangsphase befindet. Das Hinzufügen eines VI-Modus in PSReadln wäre naheliegend, aber ich habe keine Zeit, mich damit zu befassen.