使用vim強制寫入檔案系統上已修改的文件

使用vim強制寫入檔案系統上已修改的文件

在與 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 寫入」技巧是如何運作的?

相關內容