git diff
.我正在运行 Windows 8,并且安装了 vim 7.4。为方便起见,我创建了一个环境变量 VIMDIR,设置为 Vim 的安装目录 ( set VIMDIR=C:\Program Files (x86)\Vim\vim74
),并将此目录添加到 %PATH%。
Vim 带有一个%VIMDIR%\macros\less.bat
脚本,它可以用作寻呼机,以便less.bat file.txt
或dir | less.bat
将在基于 vim 的寻呼机中显示输出。我经常使用它,它工作正常。我还想使用 vim,而不是 Git 的 less.exe,作为 git 的寻呼机,以便在我这样做时运行git diff
,但我遇到了问题。
less.bat
批处理文件如果我设置%GIT_PAGER%
为%VIMDIR%\macros\less.bat
并执行 a git diff
,我会收到一条错误消息:
C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: syntax error near unexpected token `('
C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: `C:\Program Files (x86)\Vim\vim74\macros\less.bat'
Run Code Online (Sandbox Code Playgroud)
我相信这是因为 git 是一个 MSYS 程序,这意味着它无法处理 Windows 样式的C:\whatever
路径。
所以这是行不通的。我尝试的下一件事是检查less.bat
并设置%GIT_PAGER%
基于该文件的内容。在该文件中,我看到这一行,它指示 vim 从 stdin 读取:
vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
Run Code Online (Sandbox Code Playgroud)
我设置%GIT_PAGER%
为使用 MSYS 样式路径的修改版本:
set GIT_PAGER="/c/Program Files (x86)/Vim/vim74/vim.exe" --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
Run Code Online (Sandbox Code Playgroud)
那确实成功启动了vim!但仍然存在一个问题:颜色不起作用,屏幕上到处都是转义字符。请注意,通常情况下,语法突出显示效果很好。如果我运行这些命令,它将显示我用颜色生成的差异文件:
git diff > test.diff
less.bat test.diff
Run Code Online (Sandbox Code Playgroud)
但是,如果我只是调用git diff
并使用它%GIT_PAGER%
在控制台中为我显示差异,它会向我显示:
我不知道还有什么可以尝试的。有没有其他人使用 vim 在 Windows 上查看 git diffs?你是怎么做的?
谢谢你的帮助。
剩下的问题是git diff
仍然用颜色(作为 ANSI 转义序列)突出显示差异输出,并期望寻呼机(即 Vim)正确显示。但是 Vim 有自己的语法高亮(也用于差异),并且不理解序列,所以它们显示为丑陋的^[[m
. 您有两个选择:
禁用 Git 的差异突出显示(命令行参数--no-color
,但您也可以通过 取消配置git config
)。现在您需要确保 Vim 使用正确的文件类型(:set filetype=diff
;您可以通过在命令行上传递它-c {cmd}
)。
让 Vim 理解并突出显示 ANSI 转义序列;该AnsiEsc.vim插件可以做到这一点。
我推荐第一种方法。
归档时间: |
|
查看次数: |
1304 次 |
最近记录: |