私はVimを使っていくつかのスクリプトを書いていますsudoedit
。
問題は、:w
一時ファイルに書き込むときにエディタを終了しない限り、スクリプトテストが発生しないことです。
元のバージョンに強制更新するにはどうすればよいですか?それともポイントを見逃しているのですかsudoedit
?
ベストアンサー1
sudoedit
独自のユーザーIDで実行されているエディタを使用してファイルを編集できます。ファイルを一時ファイルにコピーし、編集者が書き込むことができます。エディタが閉じると、編集したファイルが再度コピーされます。
エディタの実行中に変更を自動的に書き換える機能は組み込まれていません。
だからあなたは必要です
- 別のユーザーIDでエディタを実行する(例
sudo vi /file/to/edit
:) - (別途)シェル(
sudo cp /tmp/... /file/to/edit
)またはvim内から手動でファイルをコピーします:!sudo cp % /file/to/edit
。 vimでは、Ctrl + Zを使用してシェルを起動する:sh
か、vimをバックグラウンドにしてからを使用して再起動することもできますfg
。 - 使用https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work
sudoedit
一時ファイルが変更されたら、変更を書き換える独自のバージョンを作成します。これはいくつかのスクリプトで簡単に可能です。 Inotifyは変更を検出するのに役立ちます(例を参照)。Bashスクリプトをファイルにリンクできますか?)