
我vim
在 Windows 10 上安裝使用chocolatey
。當我在 powershell 中編輯文件時,一切都很好!我甚至可以複製和貼上來工作。但是,當我編輯 git 提交訊息時,vim
無法正確重繪螢幕。如果我強制螢幕重繪,我可以正確地看到我更新的文本,但這非常煩人。
我配置git
為使用vim
:
git config --global core.editor vim
怎樣才能讓自己vim
行為得體呢?
答案1
Git for Windows 作為發行版的一部分提供了自己的 Vim 版本。這是因為需要有一個預設編輯器,而像 Git 這樣的 Unix 程式的預設編輯器通常是vi
.
當您將編輯器指定為 時vim
,正在使用的版本是 中第一個版本PATH
,如果您沒有指定要使用的自訂版本,則可能是 Windows 版本的 Git。該版本的 Vim 可能希望TERM
設定環境變數來告訴它要使用什麼終端類型,但由於事實並非如此,因此它無法正確呈現。如果您使用 Microsoft 終端實現,您可能想要用作環境變數xterm-256color
的值TERM
。
如果您想使用自訂的 Vim 版本,例如 Chocolatey 安裝的版本,那麼它需要較早,PATH
或者您需要指定完整路徑。 Git 將配置選項的值傳遞core.editor
給 shell,因此您的命令需要滿足 POSIXsh
實現的語法,其中反斜線是轉義字元。因此,您要么想在程式名稱兩邊使用正斜線或單引號。
如果您的 Vim 版本是圖形版本,那麼您需要該-f
選項,以便它不會與終端分離。否則,Vim 啟動並立即與終端分離,因此 Git 會看到它產生的進程立即退出。由於該進程(您的編輯器)已退出,Git 假定您已完成編輯。但由於您實際上沒有編輯任何內容,Git 會中止您的提交。
答案2
總長DR
為 git 提供指向我的 vim 可執行檔的直接完全限定路徑修復了問題,我不知道為什麼:
git config --global core.editor "'C:\tools\vim\vim82\vim.exe' -f -i NONE"
路徑周圍的單引號很重要,因為git
不知道如何處理反斜線的路徑。整個配置周圍的雙引號很重要,這樣 git 就不會套用到-f -f NONE
該git config
指令。我-f -i NONE
發現這個答案,我不知道它有什麼作用,但git commit
沒有它就無法工作。
我如何找到完整路徑
vim
新增一個c:\windows\vim.bat
文件,該文件用於在您鍵入時powershell
啟動:vim
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
很簡單:
@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" %*
因此,我的完整vim
路徑是C:\tools\vim\vim82\vim.exe