在新的機器上裝了 gVim 7.4,要使用檔案比較 (diff) 等功能時,都會出現以下錯誤訊息,告知無法讀寫暫存檔:

E810: Cannot read or write temp files
E97: Cannot create diffs

上網查了一下,大家的說法都是要改掉 _vimrc 裡的 MyDiff() 這個 function。

參考 "Can't run Vimdiff (7.4) on Windows 7" 這篇,拿以下這段去置換原本的 MyDiff() function 就可以了: 

 

set diffexpr=MyDiff()
  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

 

_vimrc 會在 vim 的安裝路徑,可能是自訂的路徑,預設會在 C:\Program Files\vim。 

這個問題和先前遇過的又不一樣:[VIM] 修復「無法開啟暫存檔」的錯誤 ,特此筆記。 

 

arrow
arrow
    文章標籤
    vim 編輯器 文字編輯
    全站熱搜

    小攻城師 發表在 痞客邦 留言(0) 人氣()