Эта проблема может быть вызвана файлом _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 .
Дублируется при переполнении стека (необычно, по теме на обоих сайтах), если этот ответ обновляется, то же самое следует делать и с другим.