我有一個函數可以對當前文件執行有效性檢查(以符合我的僱主的編碼標準)。我想在保存之前調用這個函數,即使用BufWritePre。但是,如果我的檢查功能失敗,我會防止保存文件。在BufWritePre期間防止文件保存
那麼,是否有可能突破BufWritePre自動命令?
我意識到我可以通過重新映射:write
命令來完成此操作,如圖所示here,但是我想盡可能避免這種情況,因爲它感覺有點不太巧妙。
在此先感謝您的建議。
我有一個函數可以對當前文件執行有效性檢查(以符合我的僱主的編碼標準)。我想在保存之前調用這個函數,即使用BufWritePre。但是,如果我的檢查功能失敗,我會防止保存文件。在BufWritePre期間防止文件保存
那麼,是否有可能突破BufWritePre自動命令?
我意識到我可以通過重新映射:write
命令來完成此操作,如圖所示here,但是我想盡可能避免這種情況,因爲它感覺有點不太巧妙。
在此先感謝您的建議。
你可以「簡單」強制錯誤:
:autocmd BufWritePre *.txt throw "you may not"
如果您希望能夠保存.txt文件再次
:autocmd!
:source $MYVIMRC
從:help BufWriteCmd
*BufWriteCmd*
BufWriteCmd Before writing the whole buffer to a file.
Should do the writing of the file and reset
'modified' if successful, unless '+' is in
'cpo' and writing to another file |cpo-+|.
The buffer contents should not be changed.
|Cmd-event|
所以,它聽起來就像你可以實現自動命令,只有做了保存,如果保存被允許重新'modified'
。
我猜你必須使用類似writefile(getline('^', '$'))
這樣的東西才能真正寫作。
在另一方面,你也許可以做到像
:write
文件。我不確定它是否會讓你在BufWriteCmd處理程序中執行此操作。:finally
子句中,以確保它即使在寫入出現問題時也能執行。
又見問題「[防止保存文件與Vim中的某些名稱](http://stackoverflow.com/q/6210946/254635)「。 – 2012-07-29 04:11:24