2014-01-23 110 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中的配置(通過註釋掉塊)也可以做到這一點。

相關問題