gvim 8.2 zeichnet den Bildschirm nicht neu, wenn eine Git-Commit-Nachricht in Windows 10 Powershell bearbeitet wird

gvim 8.2 zeichnet den Bildschirm nicht neu, wenn eine Git-Commit-Nachricht in Windows 10 Powershell bearbeitet wird

Ich habe es vimunter Windows 10 installiert mitchocolatey. Wenn ich eine Datei in Powershell bearbeite, funktioniert alles wunderbar!Sogar Kopieren und Einfügen hat funktioniert.. Wenn ich jedoch eine Git-Commit-Nachricht bearbeite, vimwird mein Bildschirm nicht richtig neu gezeichnet. Wenn ichErzwingen einer Neuzeichnung des Bildschirms, ich kann meinen aktualisierten Text richtig sehen, aber das ist super ärgerlich.

Ich habe gitdie Verwendung vimmit Folgendem konfiguriert:

git config --global core.editor vim

Wie kann ich vimmich richtig benehmen?

Antwort1

Git für Windows wird mit einer eigenen Version von Vim als Teil der Distribution ausgeliefert. Dies liegt daran, dass ein Standardeditor erforderlich ist und der Standardeditor für Unix-Programme wie Git normalerweise ist vi.

Wenn Sie den Editor als angeben vim, wird die Version verwendet, die zuerst in erscheint PATH. Dies ist wahrscheinlich die Git-Version für Windows, wenn Sie nicht angegeben haben, dass Ihre benutzerdefinierte Version verwendet werden soll. Diese Version von Vim möchte wahrscheinlich, dass die TERMUmgebungsvariable festgelegt wird, um anzugeben, welcher Terminaltyp verwendet werden soll. Da dies nicht der Fall ist, wird die Darstellung nicht richtig durchgeführt. Wenn Sie die Microsoft Terminal-Implementierung verwenden, möchten Sie wahrscheinlich xterm-256colorals Wert für die TERMUmgebungsvariable verwenden.

Wenn Sie Ihre benutzerdefinierte Vim-Version verwenden möchten, wie die von Chocolatey installierte, muss diese entweder früher vorhanden sein PATHoder Sie müssen den vollständigen Pfad angeben. Git übergibt den Wert der core.editorKonfigurationsoption an die Shell, daher muss Ihr Befehl die Syntax für eine POSIX- shImplementierung erfüllen, bei der der Backslash ein Escape-Zeichen ist. Sie sollten daher entweder Schrägstriche oder einfache Anführungszeichen um den Namen des Programms verwenden.

Wenn Ihre Version von Vim grafisch ist, benötigen Sie die -fOption, damit es sich nicht vom Terminal trennt. Andernfalls startet Vim und trennt sich sofort vom Terminal, sodass Git sieht, dass der von ihm gestartete Prozess sofort beendet wird. Da dieser Prozess (Ihr Editor) beendet wurde, geht Git davon aus, dass Sie mit der Bearbeitung fertig sind. Da Sie jedoch tatsächlich nichts bearbeitet haben, bricht Git Ihr Commit ab.

Antwort2

Kurz zusammengefasst

Indem ich Git den direkten, vollständig qualifizierten Pfad zu meiner ausführbaren Vim-Datei gab, wurden die Dinge behoben, und ich weiß nicht, warum:

git config --global core.editor "'C:\tools\vim\vim82\vim.exe' -f -i NONE"

Einfache Anführungszeichen um den Pfad sind wichtig, da gitgit nicht weiß, wie man mit Pfaden mit Backslashs umgeht. Doppelte Anführungszeichen um die gesamte Konfiguration sind wichtig, damit git -f -f NONEden git configBefehl nicht anwendet. Ich fand -f -i NONEaufdiese Antwort, und ich weiß nicht, was es macht, aber git commitohne es hat es nicht funktioniert.

Wie ich den vollständigen Pfad gefunden habe

vimfügt eine c:\windows\vim.batDatei hinzu, die powershellzum Starten verwendet wird, vimwenn Sie Folgendes eingeben vim:

PS C:\Users\heath> Get-Command vim

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     vim.bat                                            0.0.0.0    C:\windows\vim.bat

vim.batist ganz einfach:

@echo off
rem -- Run Vim --
rem # uninstall key: vim82 #

setlocal
set VIM_EXE_DIR=C:\tools\vim\vim82
if exist "%VIM%\vim82\vim.exe" set VIM_EXE_DIR=%VIM%\vim82
if exist "%VIMRUNTIME%\vim.exe" set VIM_EXE_DIR=%VIMRUNTIME%

if not exist "%VIM_EXE_DIR%\vim.exe" (
    echo "%VIM_EXE_DIR%\vim.exe" not found
    goto :eof
)

"%VIM_EXE_DIR%\vim.exe"  %*

Mein vollständiger vimPfad lautet alsoC:\tools\vim\vim82\vim.exe

verwandte Informationen