Vim
Sudoedit Vim 強制寫入(更新)而不退出
我正在使用 Vim 編寫一些腳本,並且剛剛開始使用
sudoedit
.問題是,當我
:w
寫入臨時文件時,除非我退出編輯器,否則無法對腳本進行任何測試。我怎樣才能強制更新原件,或者我錯過了點
sudoedit
?
sudoedit
允許您使用在您自己的使用者 ID 上執行的編輯器來編輯文件。它將文件複製到一個臨時文件,然後您的編輯器可以寫入該文件。一旦編輯器關閉,編輯的文件就會被複製回來。在編輯器仍在執行時,無法自動將更改寫回。
所以你需要
- 在另一個使用者 ID 上執行編輯器(例如
sudo vi /file/to/edit
)- 將文件手動複製回(單獨的)shell(
sudo cp /tmp/... /file/to/edit
)或從 vim 內部:!sudo cp % /file/to/edit
。在 vim 中,您還可以:sh
使用 Ctrl+Z 啟動 shell 或將 vim 置於後台,然後使用fg
.- 使用https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work
- 創建您自己的版本,
sudoedit
一旦更改臨時文件,就會將更改寫回。這應該很容易通過一些腳本來實現。Inotify 可以幫助您檢測更改(參見例如Can a bash script be hooked to a file?)