如何让Vim打开.git \ COMMIT_EDITMSG而不是.git \ .git \ COMMIT_EDITMSG?

时间:2014-01-23 22:41:40

标签: git vim git-commit

出于某种原因,vim每次都试图从错误的路径打开文件 COMMIT_EDITMSG 。我一直在使用git-gui做多行提交消息,因为我太懒了解决这个问题,但我已经厌倦了打开资源管理器只是为了提交一些东西。这是一个screengrab,显示了当我尝试编辑上一个提交消息时会发生什么:

enter image description here

当我尝试编写文件时(注意错误的路径):

enter image description here

将编辑器更改为记事本

时,它会突然发挥作用

enter image description here

修改

我已将问题的可能原因缩小到这两个设置(在完全安装和一些试验和错误之后):

set autochdir
set encoding=utf-8

只有这两行 .vimrc (至少在矿山中)才能重现错误。奇怪的是,注释掉其中一个语句会导致错误消失。

重现该错误的另一种方法是通过以下命令:

您应该使用此命令获取".git\COMMIT_EDITMSG" [New DIRECTORY]

vim -N -u NONE --cmd "set autochdir | set encoding=utf-8" .git\COMMIT_EDITMSG

奇怪的是,它应该用以下任何一个打开文件:

vim -N -u NONE --cmd "set autochdir"        .git\COMMIT_EDITMSG
vim -N -u NONE --cmd "set encoding=utf-8"   .git\COMMIT_EDITMSG

2 个答案:

答案 0 :(得分:0)

虽然某些内容确实与:set autochdir不兼容,但设置并非如此恶意,以至于它无法阻止您使用Vim打开任何相对路径。我已经使用了很多年没有问题。您的配置中必须有其他内容(:autocmd s?)可以打破这一点(与'autochdir'一起),因为以下方法有效:

vim -N -u NONE --cmd "set autochdir" .git/COMMIT_EDITMSG

故障排除提示:通常,一个二进制搜索,你禁用一半的插件,然后只有一半(当问题仍然存在时),或另一半(当问题消失时) )让你快速找到有问题的脚本。您可以使用~/.vimrc中的配置(通过注释掉块)来完成相同的操作。

答案 1 :(得分:-1)

(这个答案并不完全准确,正如评论中所指出的那样)

原来问题是我的 .vimrc 中这个看似无害的设置:

set autochdir

当您尝试打开具有相对路径的文件时, Vim 会提取文件父文件夹 从路径并切换到该文件夹​​。当您尝试修改上一个提交消息时, Git 会运行此命令(或多或少):

vim.exe .git\COMMIT_EDITMSG

但是在打开文件之前, Vim 会切换到文件夹 .git ,并将文件的完整路径解析为 C:\ mine \。 lua \ .git \ .git \ COMMIT_EDITMSG 导致错误消息的路径错误。

这种异常(?)发生在所有实际路径中,而不仅仅是那些带有点('。')的路径。

enter image description here

enter image description here

不确定这是否符合 Vim 错误...