Эта проблема может быть вызвана файлом _vimrc по умолчанию, созданным установщиком в Windows. Если вы по-прежнему используете этот файл по умолчанию или скопировали его в какой-то момент, проверьте функцию, назначенную этой diffexpr
опции. В одном из патчей между Vim 7.3 и 7.4 были введены новые правила цитирования по умолчанию для оболочки cmd.exe в Windows. Этот патч преодолел обходной путь в функции MyDiff (), предназначенной для устранения той же проблемы, решаемой патчем.
Функция MyDiff () была исправлена в версии 7.4.103 путем исправления установщика. Вот функция 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
Вы можете увидеть вашу полную версию в Vim с помощью :version
или :intro
команд, или на экране заставки при запуске.
К сожалению, если вам нужен официальный установщик, вам придется подождать до 8.0 или установить ночную сборку . Тем не менее, вы можете установить Vim из других мест или создать свой собственный Vim .
Дублируется при переполнении стека (необычно, по теме на обоих сайтах), если этот ответ обновляется, то же самое следует делать и с другим.