![cygwin 中的 vimdiff 无法正常工作](https://linux22.com/image/1323860/cygwin%20%E4%B8%AD%E7%9A%84%20vimdiff%20%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
当我在 cygwin 中使用 vimdiff 比较两个文件时,
vimdiff a.c b.c
所有线条均已折叠(如下所示)
然后我zR
打开所有文件夹,但没有显示任何差异。
另一件奇怪的事情是,当我开始添加新行(通过 BUTTON o)时,它开始显示差异:
我发现我的vimdiff
实际上链接到了gvim
,不确定这是不是问题所在?
$ type diff
diff is /cygdrive/c/Program Files (x86)/Vim/vim72/diff
$ type vimdiff
vimdiff is /usr/bin/vimdiff
$ ll /usr/bin/vimdiff
lrwxrwxrwx 1 dhuang7 Domain Users 25 Jul 27 16:35 /usr/bin/vimdiff -> /etc/alternatives/vimdiff
$ ll /etc/alternatives/vimdiff
lrwxrwxrwx 1 dhuang7 Domain Users 17 Jul 27 16:35 /etc/alternatives/vimdiff -> /usr/bin/gvim.exe
$ ll /usr/bin/gvim.exe
-rwxr-xr-x 1 dhuang7 Domain Users 1801245 Jun 28 12:39 /usr/bin/gvim.exe
顺便说一句,不知道.vimrc
这是什么时候运行的。我尝试将其添加set diffopt=filler,context:50
到我的系统中.vimrc
,但情况仍然相同。
在 vimdiff 启动后尝试:messages
,但没有看到错误:
"a.c" 7L, 74C
"b.c" 6L, 59C
答案1
我也遇到了同样的问题。执行 :diffupdate 后,我注意到以下错误
/bin/bash: /usr/share/vim/vim73diff: No such file or directory
该文件显然不存在,所以我怀疑 @Heptite 说的对,vi 找不到 diff 二进制文件。但是 diff.exe 已经在我的 PATH 中了,所以我对此感到困惑。但是,符号链接似乎可以解决问题。
ln -s /usr/bin/diff /usr/share/vim/vim73diff
虽然很丑,但我又回来工作了。
答案2
我刚刚遇到了同样的问题,并且又:diffupdate
恢复了运行E97: Cannot create diffs
解决方案:我的/tmp
分区已满。vimdiff
内部运行的命令无法存储结果。只需清理一下,一切就恢复正常了。