Wenn eine Datei auf den Nur-Lese-Modus eingestellt ist, wie ändere ich sie in Emacs in den Schreibmodus und umgekehrt?
quelle
Wenn eine Datei auf den Nur-Lese-Modus eingestellt ist, wie ändere ich sie in Emacs in den Schreibmodus und umgekehrt?
Mx schreibgeschützt
oder in neueren Versionen von Emacs
Mx Nur-Lese-Modus
Auf meiner Windows-Box entspricht dies Alt-x, um die Meta-Eingabeaufforderung aufzurufen, und geben Sie "schreibgeschützt umschalten" ein, um die richtige Elisp-Funktion aufzurufen.
Wenn Sie die Standardtastaturbindungen verwenden,
Cx Cq
(was Sie als "Control-X Control-Q" vorlesen) hat den gleichen Effekt. Denken Sie jedoch daran, dass Ihr Kilometerstand variieren kann, da Emacs im Wesentlichen unendlich neu konfigurierbar ist.
Nach dem Kommentar: Sie sollten beachten, dass der beschreibbare Status des Puffers die beschreibbare Berechtigung der Datei nicht ändert. Wenn Sie versuchen, in eine schreibgeschützte Datei zu schreiben, wird eine Bestätigungsmeldung angezeigt. Wenn Sie jedoch Eigentümer der Datei sind, können Sie Ihre Änderungen ausschreiben, ohne die Berechtigungen für die Datei zu ändern.
Dies ist sehr praktisch, wenn Sie eine Datei schnell ändern möchten, ohne die verschiedenen Schritte zum Hinzufügen von Schreibberechtigungen, Schreiben von Änderungen und Entfernen von Schreibberechtigungen ausführen zu müssen. Ich neige dazu, diesen letzten Schritt zu vergessen und potenziell kritische Dateien für versehentliche Änderungen später offen zu lassen.
toggle-read-only
nur der schreibgeschützte Status des Puffers und nicht der Datei umgeschaltet . Wenn Sie den Modus der Datei ändern möchten, verwenden Sie die Dateidired
oder führen Sie siechmod +w
als Shell-Befehl aus.Stellen Sie sicher, dass Sie "Datei" nicht mit "Puffer" verwechseln. Sie können die Puffer mit
C-x C-q
(toggle-read-only
) auf schreibgeschützt und wieder zurück setzen . Wenn Sie die Berechtigung haben, eine Datei zu lesen, aber nicht zu schreiben, wird der Puffer, den Sie beim Besuch der Datei (C-x C-f
oderfind-file
) erhalten, automatisch in den schreibgeschützten Modus versetzt. Wenn Sie die Berechtigungen für eine Datei im Dateisystem ändern möchten, beginnen Sie möglicherweise mitdired
dem Verzeichnis, das die Datei enthält. Dokumentation für dired finden Sie in info;C-h i (emacs)dired RET
.quelle
inc
.Was ich gefunden habe ist
M-x set-file-modes filename mode
Es funktionierte auf meiner Windows Vista-Box. Beispielsweise:
M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
quelle
(set-file-modes FILE 438)
(wobei 438 das Dezimaläquivalent von2#0110110110
oder ist666
).Wie dort oben von jemand anderem erwähnt: Mx schreibgeschützt würde funktionieren.
Dies ist jedoch jetzt veraltet und der schreibgeschützte Mx-Modus ist der derzeitige Weg, dies zu tun, da er auf die Cx-Cq-Tastenkombination eingestellt ist .
quelle
CTRL + X + CTRL + Q
quelle
Wenn nur der Puffer (und nicht die Datei) schreibgeschützt ist, können Sie verwenden
toggle-read-only
, an den normalerweise gebunden istC-x C-q
.Wenn die Datei selbst schreibgeschützt ist, ist die folgende Funktion möglicherweise hilfreich:
Die Funktion hängt ab von
unix-output
undtrim-right
:Platzieren Sie die Funktionen in Ihrem
~/.emacs.el
, bewerten Sie sie (oder starten Sie Emacs neu). Sie können dann die Datei im aktuellen Puffer mit beschreibbar machenM-x set-buffer-file-writable
.quelle
set-buffer
Außenseite dersave-excursion
.subseq
mitsubstring
jetzt. Das sollte die Warnung vermeiden.Wenn Sie sich ein Verzeichnis von Dateien ansehen (dired), können Sie
Shift + M
einen Dateinamen verwenden undmodespec
die gleichen Attribute eingeben , die imchmod
Befehl verwendet wurden.M modespec <RET>
Weitere nützliche Befehle für Dateien finden Sie in einer Verzeichnisliste unter http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html
quelle
Ich habe die Lösung von Vebjorn Ljosa ausprobiert und es stellte sich heraus, dass es zumindest in meinem Emacs (22.3.1) keine Funktion wie "Trim-Right" gibt, mit der eine nutzlose Newline am Ende der chmod-Ausgabe entfernt wird.
Das Entfernen des Aufrufs von "Rechts trimmen" hat geholfen, aber die Statuszeile wurde aufgrund des zusätzlichen Zeilenumbruchs "abprallend".
quelle
C-x C-q
ist nutzlos. Weil Sie auch die Berechtigung zum Speichern einer Datei benötigen.Ich benutze Spacemacs . Es gibt mir eine bequeme Funktion, um diese Frage zu lösen. Der Code folgt.
Ich rufe
spacemacs/sudo-edit
an, um eine Datei in Emacs zu öffnen und mein Passwort einzugeben. Ich kann die Datei ohne schreibgeschützten Modus ändern.Sie können eine neue Funktion wie schreiben
spacemacs/sudo-edit
.quelle