Bu sorun, Windows'ta yükleyici tarafından oluşturulan varsayılan _vimrc dosyasından kaynaklanabilir. Hala bu varsayılan dosyayı kullanıyorsanız veya bir noktada kopyaladıysanız, diffexpr
seçeneğe atadığınız işlevi kontrol edin . Vim 7.3 ile 7.4 arasındaki düzeltme eklerinden biri, Windows'ta cmd.exe kabuğu için yeni varsayılan alıntı kuralları getirdi. Bu düzeltme eki, düzeltme eki tarafından çözülen aynı sorunu gidermek için tasarlanmış MyDiff () işlevindeki geçici çözümü bozdu.
MyDiff () işlevi, yükleyiciyi sabitleyerek 7.4.103 sürümünde düzeltildi. İşte, sadece _vimrc'nize kopyalamak istiyorsanız, en son yükleyicinin sizin için yaratacağı MyDiff () işlevi:
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
Tam sürümünüzü Vim'de :version
veya :intro
komutlarını kullanarak veya başlangıçtaki açılış ekranından görebilirsiniz.
Maalesef resmi bir kurucu istiyorsanız, 8.0'a kadar beklemeniz ya da bir gece kurmanız gerekecek . Bununla birlikte, Vim'i başka yerlerden yükleyebilir veya kendi Vim'inizi oluşturabilirsiniz .
Bu cevap güncellendiğinde Yığın Taşması üzerine çoğaltılmıştır (alışılmadık şekilde her iki sitede de konuyla ilgili).