在與 git 互動變基後,我經常發現在 vim 中開啟的檔案已在檔案系統上被修改。當我用:w
或寫入文件時:w!
,我得到提示WARNING: The file has been changed since reading it!!!
/ Do you really want to write to it (y/n)?
。
我認為這個警告夠合理;靜默地覆蓋檔案系統上因任意原因而更改的檔案是有問題的行為。然而,在這種情況下,我知道為什麼文件被修改,我經常發現我想強制寫入它,而不是檢查是否有提示。我曾經遇到過這樣的情況:我沒有註意到提示並立即關閉,導致建置不一致,有時還會遺失資料。
如何永久或(最好)使用類似 的擴充指令擺脫確認提示w!
?
當我谷歌這個時,我得到了一堆關於強制寫入只讀文件的點擊w!
,但我似乎找不到任何涉及強制寫入修改文件的內容。
答案1
以下命令適用於當前緩衝區(我不知道多個緩衝區的解決方案):
:w !sudo tee %
該字元%
代表目前檔案名稱。該sudo
命令允許覆蓋以唯讀方式開啟的檔案。
若要定義:w!!
為執行上述操作的命令,請將其新增至.vimrc
:
cmap w!! w !sudo tee > /dev/null %
此部分消除了此處未使用的> /dev/null
標準輸出。tee
欲了解更多信息,請參閱帖子 vim「用 sudo 寫入」技巧是如何運作的?