
Ich habe es vim
unter 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, vim
wird 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 git
die Verwendung vim
mit Folgendem konfiguriert:
git config --global core.editor vim
Wie kann ich vim
mich 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 TERM
Umgebungsvariable 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-256color
als Wert für die TERM
Umgebungsvariable verwenden.
Wenn Sie Ihre benutzerdefinierte Vim-Version verwenden möchten, wie die von Chocolatey installierte, muss diese entweder früher vorhanden sein PATH
oder Sie müssen den vollständigen Pfad angeben. Git übergibt den Wert der core.editor
Konfigurationsoption an die Shell, daher muss Ihr Befehl die Syntax für eine POSIX- sh
Implementierung 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 -f
Option, 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 git
git nicht weiß, wie man mit Pfaden mit Backslashs umgeht. Doppelte Anführungszeichen um die gesamte Konfiguration sind wichtig, damit git -f -f NONE
den git config
Befehl nicht anwendet. Ich fand -f -i NONE
aufdiese Antwort, und ich weiß nicht, was es macht, aber git commit
ohne es hat es nicht funktioniert.
Wie ich den vollständigen Pfad gefunden habe
vim
fügt eine c:\windows\vim.bat
Datei hinzu, die powershell
zum Starten verwendet wird, vim
wenn 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.bat
ist 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 vim
Pfad lautet alsoC:\tools\vim\vim82\vim.exe