2010-08-17 80 views
1

我有一個Windows目錄(U:\S),其中包含的文件不能是 已更改。它們的只讀位不能被設置,所以它們必須保持可寫。VIM自動命令的正確模式?

由於我必須對VIM的某些文件內容進行修改,所以我想確保不會意外更改文件的內容。

於是,我把下面一行到我.vimrc conifugration文件:

autocmd InsertEnter u:/s/* call confirm("File should not be changed") 

似乎做工精細。

但後來,我也有目錄中名爲U:\supportTerminal包含文件 我變化。當我在該目錄中編輯文件時,出於某種原因文件模式u:/s/*匹配,彈出警告。

我試着用一些方式玩弄,卻找不着,只有內ü匹配:\秒,但內ü沒有:\ supportTerminal

所以,我怎麼可能去了解我想要什麼?

+0

我不知道爲什麼這個模式匹配第二個目錄,但是你可以根據你的描述使用'set readonly'(action:BufRead)而不是'call confirm(...)'。 – tux21b 2010-08-17 12:12:26

+0

我不能那樣做,文件必須在所有時間都保持可寫*。我也傾向於認爲'set readonly'同樣會被用來編輯u:\ supportTerminal中的文件。 – 2010-08-17 12:17:30

+0

哦,我明白了,'set readonly'實際上並沒有設置文件系統只讀位,而是一個內部文件系統。好的,在這種情況下,如果模式匹配正確,那將會起作用。 – 2010-08-17 12:39:40

回答

2

這使得一個錯誤,你應該報告給vim-dev at vim.org。在Linux中,我沒有這種行爲:它很好地匹配。

作爲臨時解決辦法,

:au BufRead u:/s/* set readonly 
:au! BufRead u:/supportTerminal/* 

首先要把一般規律,然後刪除一個目錄作爲例外。不確定這是否適用於Windows GVim。如果失敗,其他的黑客是:

:au BufRead u:/supportTerminal/* set noreadonly 

PS:如上述意見所,設置VIM自己設定readonly更好地工作,以防止意外編輯。用戶不能打開RO標誌的:write文件,但可以通過設置noreadonly(如果需要)繞過它。