2014-01-23 102 views
3

由于某些原因,vim一直试图从错误的路径打开文件COMMIT_EDITMSG。我一直在使用git-gui来做多线提交消息,因为我懒得修复这个问题,但我厌倦了打开资源管理器来提交一些东西。这里是一个说明会发生什么,当我尝试编辑先前提交消息screengrab:如何让Vim打开.git COMMIT_EDITMSG而不是.git .git COMMIT_EDITMSG?

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 

回答

-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的错误......

+0

根据':h autochdir'设置提供的向后兼容性,它可能会打开插件,如果它打开。在这种情况下,它甚至会打破尝试使用vim的外部程序。 – FDinoff

+0

这个问题似乎相对容易解决。您只需在检测到相对路径时防止目录更改。我只是说。我对Vim的发展一无所知。问题可能比看起来更复杂。 – Segfault

+0

这并不准确;这不是'autochdir'的功能。我的猜测是你使用的插件没有考虑'autochdir',所以禁用它只是一个解决方法。 –

0

虽然有些东西确实是:set autochdir不相容,设置也不是那么恶意的,它可以防止你从Vim打开任何相对路径。我一直在使用这个很多年没有问题。必须有配置其他的东西(:autocmd S'),打破这个(与'autochdir'一起),因为以下工作:

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

故障排除提示:通常情况下,二进制搜索,你禁用的一半的插件,那么只有一半(当问题仍然存在时),或另一半(问题消失时),可以让您快速找到有问题的脚本。您的~/.vimrc中的配置(通过注释掉块)也可以做到这一点。

相关问题