
Lo instalé vim
en Windows 10 usandochocolatey
. Cuando edito un archivo en powershell, ¡todo funciona muy bien!Incluso pude copiar y pegar para trabajar.. Sin embargo, cuando edito un mensaje de confirmación de git, vim
no se vuelve a dibujar mi pantalla correctamente. Si yoforzar un redibujado de pantalla, puedo ver mi texto actualizado correctamente, pero eso es muy molesto.
Lo configuré git
para usar vim
con:
git config --global core.editor vim
¿Cómo puedo hacer para vim
comportarme correctamente?
Respuesta1
Git para Windows incluye su propia versión de Vim como parte de la distribución. Esto se debe a que es necesario que haya un editor predeterminado, y el editor predeterminado para programas Unix como Git suele ser vi
.
Cuando especifica el editor como vim
, la versión que se utiliza es la versión que aparece primero en PATH
, que probablemente sea la versión de Git para Windows si no ha especificado que se utilizará su versión personalizada. Esa versión de Vim probablemente quiera que la TERM
variable de entorno esté configurada para indicarle qué tipo de terminal usar y, como no es así, no se representa correctamente. Si está utilizando la implementación de Microsoft Terminal, probablemente desee utilizarla xterm-256color
como valor para la TERM
variable de entorno.
Si desea utilizar su versión personalizada de Vim, como la instalada por Chocolatey, debe ser anterior PATH
o especificar la ruta completa. Git pasa el valor de la core.editor
opción de configuración al shell, por lo que su comando debe cumplir con la sintaxis para una sh
implementación POSIX, donde la barra invertida es un carácter de escape. Por lo tanto, querrá utilizar barras diagonales o comillas simples alrededor del nombre del programa.
Si tu versión de Vim es gráfica, entonces necesitas la -f
opción para que no se desprenda del terminal. De lo contrario, Vim se inicia y se desconecta inmediatamente de la terminal, por lo que Git ve que el proceso que generó sale inmediatamente. Dado que ese proceso (su editor) salió, Git supone que ha terminado de editar. Pero como en realidad no editaste nada, Git cancela tu confirmación.
Respuesta2
TLDR
Darle a git la ruta directa y completa a mi ejecutable vim arregló cosas, y no sé por qué:
git config --global core.editor "'C:\tools\vim\vim82\vim.exe' -f -i NONE"
Las comillas simples alrededor de la ruta son importantes porque git
no sabe cómo manejar rutas con barras invertidas. Las comillas dobles alrededor de toda la configuración son importantes para que git no se aplique -f -f NONE
al git config
comando. encontré -f -i NONE
enesta respuesta, y no sé qué hace, pero git commit
no funcionó sin él.
Cómo encontré el camino completo
vim
agrega un c:\windows\vim.bat
archivo, que es lo que powershell
se utiliza para iniciar vim
cuando escribes 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
es bastante simple:
@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" %*
Así, mi vim
camino completo esC:\tools\vim\vim82\vim.exe