Ця проблема може бути викликана файлом _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 .
Дублюється на переповнення стека (як правило, на тему на обох сайтах), якщо ця відповідь оновлюється так, як і інша.