使用gvim for windows和msys git 1.7.0.2的fugitive.vim的:GDiff命令时出错

Pau*_*cks 11 git vim msysgit vim-fugitive

当我在Windows上时,我一直在使用git和fugitive.vim来管理代码.但是,我遇到了一个问题.根据文档,:GDiff命令应该是一个diff窗口,并允许我只放置文件的一部分.但是,当我在包含更改的文件中发出命令时,我收到以下错误消息: 替代文字

这是windows的问题吗?VIM?逃犯?msysgit?文件权限?有人知道吗?

Cha*_*les 14

我有同样的问题 - 这是我如何解决它.

默认情况下,Vim会尝试在原始文件旁边存储交换文件.Fugitive创建一个与任何实际文件路径不对应的缓冲区,因此Vim barfs尝试创建交换文件时.解决方案是确保Vim具有写入的路径.

以下是我修复此问题的方法:

if has("win32") || has("win64")
   set directory=$TMP
else
   set directory=~/tmp
end
Run Code Online (Sandbox Code Playgroud)

这是GitHub上的原始问题:https: //github.com/tpope/vim-fugitive/issues/9

编辑:

由于FOW低于所指出的,它可能会更好使用类似以下内容:

set directory+=,~/tmp,$TMP
Run Code Online (Sandbox Code Playgroud)

Vim应该使用它的第一条路径.


Von*_*onC 1

这可能与我的SO回答中提到的msysgit问题428有关。

尝试cmd/git.cmd按照我之前的回答中的描述进行修补,看看是否有帮助。

除此之外,还有两个选择:

  • 要么是锁定问题(文件被进程锁定):进程监视器进程资源管理器之类的实用程序可能有助于查看是否是这种情况(以及该交换文件上到底有什么句柄)
  • 或 Git 问题。一个好技巧是安装 msysgit 的网络安装程序,它将在您的 Windows 上构建最新版本的 Git。然后,您可以尝试查看该更新版本是否仍然存在问题。
    注意:第三个选项,尝试降级 Git,再次排除与该工具的任何链接。