Dělám nějaké skripty s Vim a právě jsem začal používat sudoedit
.
Problém je, když :w
zapisuje se do dočasného souboru, takže žádné testování skriptu nemůže proběhnout, dokud neukončím editor.
Jak mohu vynutit aktualizaci originálu, nebo mi uniká smysl sudoedit
?
Přijatá odpověď:
sudoedit
umožňuje upravovat soubor pomocí editoru běžícího na vašem vlastním uživatelském ID. Zkopíruje soubor do dočasného souboru, do kterého může váš editor zapisovat. Jakmile se editor zavře, upravený soubor se zkopíruje zpět.
Neexistuje žádná vestavěná možnost automatického zápisu změn zpět, když je editor stále spuštěný.
Takže potřebujete buď
- spusťte editor na jiném ID uživatele (např.
sudo vi /file/to/edit
) - zkopírujte soubor ručně zpět do (samostatného) shellu (
sudo cp /tmp/... /file/to/edit
) nebo zevnitř vim:!sudo cp % /file/to/edit
. Z vim můžete také spustit shell pomocí:sh
nebo umístěte vim na pozadí pomocí Ctrl+Z a obnovte jej pomocífg
. - použijte https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work
- vytvořte si vlastní verzi
sudoedit
který zapisuje změny zpět, jakmile se změní dočasné soubory. To by mělo být snadno proveditelné pomocí nějakého skriptování. Inotify vám může pomoci detekovat změny (viz například Může být bash skript připojen k souboru?)