Esse problema pode ser causado pelo arquivo _vimrc padrão criado pelo instalador no Windows. Se você ainda estiver usando esse arquivo padrão ou copiado em algum momento, verifique a função atribuída à opção diffexpr
. Um dos patches entre o Vim 7.3 e 7.4 introduziu novas regras de cotação padrão para o shell cmd.exe no Windows. Esse patch quebrou a solução alternativa na função MyDiff () projetada para corrigir o mesmo problema resolvido pelo patch.
A função MyDiff () foi corrigida pela versão 7.4.103 corrigindo o instalador. Aqui está a função MyDiff () que o instalador mais recente criará para você se você quiser copiá-lo para o seu _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
Você pode ver sua versão completa no Vim usando os comandos :version
ou :intro
ou na tela inicial na inicialização.
Infelizmente, se você quiser um instalador oficial, precisará esperar até 8.0 ou instalar um conjunto noturno . No entanto, você pode instalar o Vim de outros lugares ou construa seu próprio Vim .
Duplicado no Stack Overflow (raramente, no tópico em ambos os sites), se essa resposta for atualizada, o mesmo outro.