出于某种原因,vim每次都试图从错误的路径打开文件 COMMIT_EDITMSG 。我一直在使用git-gui做多行提交消息,因为我太懒了解决这个问题,但我已经厌倦了打开资源管理器只是为了提交一些东西。这是一个screengrab,显示了当我尝试编辑上一个提交消息时会发生什么:
当我尝试编写文件时(注意错误的路径):
将编辑器更改为记事本:
时,它会突然发挥作用
修改:
我已将问题的可能原因缩小到这两个设置(在完全安装和一些试验和错误之后):
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
答案 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 导致错误消息的路径错误。
这种异常(?)发生在所有实际路径中,而不仅仅是那些带有点('。')的路径。
不确定这是否符合 Vim 错误...