Gibt es eine Möglichkeit, vim-Tastenkombinationen in Powershell zu erhalten, wie Sie es in Bash oder Zsh mit einem Befehl wie tun würden?
set -o vi
Gibt es eine Möglichkeit, vim-Tastenkombinationen in Powershell zu erhalten, wie Sie es in Bash oder Zsh mit einem Befehl wie tun würden?
set -o vi
Antworten:
In diesen Tagen haben Sie ein paar 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 dies in Ihr PowerShell-Profil ein:
$VIMEXEPATH = "c:\<location>\vim.exe"
Set-Alias vim $VIMEXEPATH
Set-Alias vi $VIMEXEPATH
Ich würde auch empfehlen, Folgendes zu Ihrer vimrc
Datei hinzuzufügen, damit sie Shell-Befehle mit PowerShell selbst ausführt.
set shell=powershell
set shellcmdflag=-command
Ansonsten ist PSReadLine in der PS Gallery die einzige ISE, die derzeit einen Vi-Modus unterstützt
Es gibt Verwendungshinweise, aber für den VI-Modus müssen Sie die folgende Zeile zu Ihrem ISE-Profil hinzufügen.
Set-PSReadlineOption -EditMode vi
Beachten Sie, dass Vi-Unterstützung in Version 1.2 hinzugefügt wurde, 1.1 jedoch mit Windows 10 ausgeliefert wurde. Sie müssen den Parameter -force verwenden, um die Versandversion (auch manuell installiert) zu aktualisieren.
PSReadline-Modul bietet dies.
Die Installation ist einfach nicht sicher, was die Anforderungen sind, aber ich denke, mindestens Windows 10 für diese Methode zur Verfügung gestellt. Wenn Sie nicht über OneGet verfügen oder nicht sicher sind, können Sie die Anweisungen unter PSReadline befolgen
So installieren Sie PSReadline, ohne die Berechtigungen zu erhöhen
Install-Module PsReadline -Scope CurrentUser
Überprüfen Sie, ob Sie ein Powershell-Profil haben
Test-Path $PROFILE
Wenn Sie keine erstellen
New-File -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 neu
& $PROFILE
Ich würde nicht schwören, dass es in Powershell keine undokumentierte Funktion gibt, die dies zulässt, aber meines Wissens lautet die Antwort nein. Zumindest habe ich in der Powershell-Dokumentation noch nie etwas gesehen, was darauf hindeutet, dass dies möglich ist.
JR
In diesem Fall können Sie PowerShell-Syntaxhervorhebungen in VIM laden. Es ist das, was ich für die Skriptentwicklung benutze.
http://www.vim.org/scripts/script.php?script_id=1327
Es befindet sich zwar nicht in der Shell selbst, eignet sich jedoch zum Erstellen längerer Skripts. Ich habe ein Fenster in VIM und eine PowerShell-Eingabeaufforderung in einem anderen. Ich finde es sehr praktisch .
Die Powershell-Engine bietet jetzt die Haken, um dies relativ unkompliziert zu machen, aber ich kenne niemanden, der es bisher getan hat.
Das PSReadln-Projekt verfügt über einen Emergant-Emacs-Modus, der sich jedoch noch in den Kinderschuhen befindet. Das Hinzufügen eines vi-Modus in PSReadln wäre die naheliegende Sache, aber ich habe keine Zeit, mich dem zu widmen.