Wenn ich in Vim eine Kopie des aktuellen Puffers mit in eine neue Datei schreibe :w [filename]
, scheint es, dass Vim die Standard-Dateiberechtigungen (dh durch umask oder was auch immer festgelegt) für die neue Datei verwendet. Wenn der aktuelle Puffer jedoch aus einer vorhandenen Datei geladen wurde, sollte das "richtige" Verhalten nicht darin bestehen, die Berechtigungen aus dieser Datei zu duplizieren ? Wenn ich beispielsweise eine ausführbare Datei bearbeite und eine neue Kopie der Datei schreibe, warum schreibt Vim dann keine neue ausführbare Datei ? Gibt es eine Möglichkeit, Vim zu zwingen, sich so zu verhalten, wie ich es beschreibe, außer einfach so etwas wie ! chmod --reference % [newfilename]
nach dem Schreiben der neuen Datei zu tun ?
quelle
chmod
für Sie erledigt . AFAIK, vim hat dies nicht eingebaut.Antworten:
Sie könnten so etwas tun. Erfassen Sie zunächst den Namen der Originaldatei.
Wenn Sie dann die neue Datei speichern, ändern Sie ihre Berechtigungen so, dass sie mit denen der Originaldatei übereinstimmen.
Fügen Sie einfach diese beiden Auto-Befehle in Ihr ~ / .vimrc ein.
quelle
echo system(
usw. zusilent echo system(
usw. Dadurch wird vermieden, dass "ENTER drücken, um fortzufahren" hängt.call system(...
vermeiden können, etwas auf das Display zu drucken, aber ich habe versucht, das Problem zu vermeiden, dass der Befehl stillschweigend fehlschlägt. Wenn Sie nicht glauben, dass es jemals scheitern wird, oder lieber mit gelegentlichem Versagen als mit lästigem leben möchtenPress ENTER...
, dann stimme ich Ihrem Vorschlag zu. Ich denke jedoch, eine bessere Lösung wäre, eine Funktion zu schreiben, die die Ausgabe von system () erfasst und nur dann wiedergibt, wenn sie nicht leer ist. Ich habe das in Plugins gemacht und es funktioniert ziemlich gut.Press ENTER,
, also denke ich, dass ich entweder dabei bleibensilent
oder es verwenden werdecall
. Nochmals vielen Dank für die Vorschläge!Stellen Sie sicher, dass die Datei keine nicht gespeicherten Änderungen enthält, und erstellen Sie dann
cp
eine Kopie. Dies führt zu einer Kopie mit den gleichen Berechtigungen wie das Original.quelle