Vim Read‑only speichern

Nach längerem Editieren von /etc/httpd/httpd.conf merkte ich: als normaler User gestartet, keine
Schreibrechte (E212: Can't open file for writing).
Klar, man könnte in eine Kopie speichern und mit sudo mv ersetzen – aber es geht einfacher.
Lösung direkt aus Vim: :w !sudo tee %
Vim meldet (W12), dass die Datei geändert wurde und neu geladen werden soll. Mit L neu laden.
Warum funktioniert das?
Aus :help und man tee:
:w[rite] {file}– schreibt den Buffer in {file}!{cmd}– führt {cmd} in der Shell austee [FILE]– liest von stdin und schreibt nach FILE/stdout%– referenziert die aktuelle Datei
Wir pipen den Buffer nach sudo tee %, das als Root in die aktuelle Datei schreibt.
Weitere Varianten (vgl. commandlinefu):
:%!sudo tee %:w !sudo tee > /dev/null %command W :execute ':silent w !sudo tee % > /dev/null' | :edit!:w !pfexec tee %
Neovim
(Abschnitt ergänzt im März 2024)
Der Tipp oben funktioniert in Neovim nicht (siehe https://github.com/neovim/neovim/issues/1716).
Es gibt Plugins als Lösung. Ich nutze Suda: https://github.com/lambdalisue/suda.vim.
Es stellt :SudaWrite und :SudaRead bereit, um Dateien mit erhöhten Rechten zu schreiben/lesen.
Links

Ich bin ein brasilianischer Computeringenieur mit Wohnsitz in Deutschland und begeistere mich für Technik, Wissenschaft, Fotografie und Sprachen.
Ich programmiere seit etwa zwei Jahrzehnten und habe dabei alles von mobilen Apps und Webentwicklung bis hin zu Machine Learning erkundet. Derzeit fokussiere ich mich auf Cloud‑SRE und Data Engineering.
Ich engagiere mich ehrenamtlich in den Open‑Source- und Python‑Communities, helfe bei der Organisation der PyCon DE und PyData Berlin, betreue als Mentor und trage mit Code und Übersetzungen bei.
In meinem Blog teile ich Linux‑Tipps, Einrichtungsanleitungen und persönliche Notizen, die ich als spätere Referenz geschrieben habe. Ich hoffe, dass sie auch anderen nützlich sind. Die Inhalte sind in mehreren Sprachen verfügbar.
Schau dir meine Galerie an, um einige meiner Fotografien zu sehen.
Abseits der Tastatur findest du mich auf Konzerten, beim Klarinettenspiel, Radfahren, Tauchen oder beim Erkunden neuer Orte, Kulturen und Küchen.
Ich freue mich immer über den Austausch! 🙂