Si un fichier est configuré en mode lecture seule, comment le changer en mode écriture et vice versa depuis Emacs?
la source
Si un fichier est configuré en mode lecture seule, comment le changer en mode écriture et vice versa depuis Emacs?
Mx bascule en lecture seule
ou dans des versions plus récentes d'Emacs
Mode lecture seule MX
Sur ma boîte Windows, cela revient à Alt-x pour afficher l'invite méta et en tapant "toggle-read-only" pour appeler la fonction elisp correcte.
Si vous utilisez les liaisons clavier par défaut,
Cx Cq
(que vous lisez à haute voix "Control-X Control-Q") aura le même effet. N'oubliez pas, cependant, étant donné qu'emacs est essentiellement reconfigurable à l'infini, votre kilométrage peut varier.
Suite du commentaire: vous devez noter que le statut inscriptible du tampon ne change pas l'autorisation d'écriture du fichier. Si vous essayez d'écrire dans un fichier en lecture seule , vous verrez un message de confirmation. Toutefois, si vous possédez le fichier, vous pouvez écrire vos modifications sans modifier les autorisations sur le fichier.
Ceci est très pratique si vous souhaitez apporter une modification rapide à un fichier sans avoir à passer par les multiples étapes d'ajout de l'autorisation d'écriture, d'écriture des modifications, de suppression de l'autorisation d'écriture. J'ai tendance à oublier cette dernière étape, en laissant les fichiers potentiellement critiques ouverts pour des modifications accidentelles plus tard.
toggle-read-only
ne fait basculer que l'état de lecture seule du tampon et non du fichier. Si vous souhaitez changer le mode du fichier, utilisezdired
ou exécutezchmod +w
comme une commande shell sur le fichier.Assurez-vous de ne pas confondre «fichier» avec «tampon». Vous pouvez définir les tampons en lecture seule et inversement avec
C-x C-q
(toggle-read-only
). Si vous avez l'autorisation de lire, mais pas d'écrire, un fichier, le tampon que vous obtenez lorsque vous visitez le fichier (C-x C-f
oufind-file
) sera automatiquement mis en mode lecture seule. Si vous souhaitez modifier les autorisations sur un fichier dans le système de fichiers, commencez peut-être pardired
sur le répertoire contenant le fichier. La documentation pour dired peut être trouvée dans info;C-h i (emacs)dired RET
.la source
inc
. Apprendre à un homme à pêcher ...Ce que j'ai trouvé c'est
M-x set-file-modes filename mode
Cela a fonctionné sur ma boîte Windows Vista. Par exemple:
M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
la source
(set-file-modes FILE 438)
(où 438 est l'équivalent décimal de2#0110110110
ou666
).Comme mentionné là-haut par quelqu'un d'autre: Mx toggle-read-only fonctionnerait.
Cependant, cela est maintenant obsolète et le mode lecture seule Mx est la façon actuelle de le faire, il est défini sur la liaison de touches Cx Cq .
la source
CTRL + X + CTRL + Q
la source
Si seul le tampon (et non le fichier) est en lecture seule, vous pouvez utiliser
toggle-read-only
, qui est généralement lié àC-x C-q
.Si le fichier lui-même est en lecture seule, cependant, vous pouvez trouver la fonction suivante utile:
La fonction dépend de
unix-output
ettrim-right
:Placez les fonctions dans votre
~/.emacs.el
, évaluez-les (ou redémarrez emacs). Vous pouvez ensuite rendre le fichier dans le tampon actuel accessible en écriture avecM-x set-buffer-file-writable
.la source
set-buffer
extérieur du fichiersave-excursion
.subseq
parsubstring
maintenant. Cela devrait éviter l'avertissement.Si vous recherchez un répertoire de fichiers (dired), vous pouvez utiliser
Shift + M
sur un nom de fichier et entrermodespec
les mêmes attributs que ceux utilisés dans lachmod
commande.M modespec <RET>
Voir les autres commandes utiles sur les fichiers dans une liste de répertoires à http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html
la source
J'ai essayé la solution de Vebjorn Ljosa, et il s'est avéré qu'au moins dans mon Emacs (22.3.1), il n'y a pas de fonction telle que 'trim-right', qui est utilisée pour supprimer une nouvelle ligne inutile à la fin de la sortie chmod.
La suppression de l'appel à 'trim-right' a aidé, mais a fait rebondir la ligne d'état en raison de la nouvelle ligne supplémentaire.
la source
C-x C-q
est inutile. Parce que vous avez également besoin de l'autorisation pour enregistrer un fichier.J'utilise Spacemacs . Cela me donne une fonction pratique pour résoudre cette question. Le code suit.
J'appelle
spacemacs/sudo-edit
pour ouvrir un fichier dans emacs et entrer mon mot de passe, je peux changer le fichier sans mode lecture seule.Vous pouvez écrire une nouvelle fonction comme
spacemacs/sudo-edit
.la source