Answers:
此问题可能是由Windows上的安装程序创建的默认_vimrc文件引起的。如果您仍在使用该默认文件,或者在某个时候复制了该文件,请检查已分配给该diffexpr
选项的功能。Vim 7.3和7.4之间的补丁之一为Windows上的cmd.exe shell引入了新的默认引用规则。此修补程序破坏了MyDiff()函数中的解决方法,该功能旨在解决该修补程序解决的相同问题。
通过修复安装程序,7.4.103版修复了MyDiff()函数。这是MyDiff()函数,如果您只想将其复制到_vimrc,最新的安装程序将为您创建:
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
if empty(&shellxquote)
let l:shxq_sav = ''
set shellxquote&
endif
let cmd = '"' . $VIMRUNTIME . '\diff"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
if exists('l:shxq_sav')
let &shellxquote=l:shxq_sav
endif
endfunction
您可以使用:version
或:intro
命令在Vim中查看完整版本,也可以在启动时在启动屏幕上查看完整版本。
不幸的是,如果您需要正式的安装程序,则将需要等到8.0或安装每夜构建一次。但是,您可以从其他地方安装Vim或构建自己的Vim。
:intro
命令会显示相同的文本,:version
命令会在“包含的补丁程序”行中提供信息。:version
还给出了包含或排除功能的非常详细的列表。
MyDiff()
了在Windows上使用vim时要使用的东西,但这是为了通过cmd使用vim,而我是通过git bash使用vim。谢谢。