ปัญหานี้อาจเกิดจากไฟล์ _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
ท่านสามารถเข้าดูเวอร์ชันเต็มของคุณในกลุ่มที่ใช้:version
หรือ:intro
คำสั่งหรือที่หน้าจอเริ่มต้นที่เริ่มต้น
แต่น่าเสียดายถ้าคุณต้องการการติดตั้งอย่างเป็นทางการคุณอาจจะต้องรอจนกว่าจะถึง 8.0 หรือติดตั้งคืนสร้าง แต่คุณสามารถติดตั้งเป็นกลุ่มจากสถานที่อื่น ๆหรือสร้างกลุ่มของคุณเอง
ทำซ้ำใน Stack Overflow (ผิดปกติบนหัวข้อในทั้งสองไซต์) หากคำตอบนี้ได้รับการอัปเดต