Si un archivo está configurado en modo de solo lectura, ¿cómo lo cambio a modo de escritura y viceversa desde Emacs?
fuente
Si un archivo está configurado en modo de solo lectura, ¿cómo lo cambio a modo de escritura y viceversa desde Emacs?
Mx alternar-solo lectura
o en versiones más recientes de Emacs
Mx modo de solo lectura
En mi cuadro de Windows, eso equivale a Alt-x para que aparezca el indicador de meta y escriba "alternar-solo lectura" para llamar a la función elisp correcta.
Si está utilizando los enlaces de teclado predeterminados,
Cx Cq
(que lees en voz alta como "Control-X Control-Q") tendrá el mismo efecto. Sin embargo, recuerde que dado que emacs es esencialmente infinitamente reconfigurable, su kilometraje puede variar.
Seguimiento del comentario: debe tener en cuenta que el estado de escritura del búfer no cambia el permiso de escritura del archivo. Si intenta escribir en un archivo de solo lectura , verá un mensaje de confirmación. Sin embargo, si posee el archivo, puede escribir sus cambios sin cambiar los permisos del archivo.
Esto es muy conveniente si desea realizar un cambio rápido en un archivo sin tener que pasar por los múltiples pasos de agregar permiso de escritura, escribir cambios, eliminar el permiso de escritura. Tiendo a olvidar ese último paso, dejando los archivos potencialmente críticos abiertos para cambios accidentales más adelante.
toggle-read-only
solo alterna el estado de solo lectura del búfer no del archivo. Si desea cambiar el modo del archivo, usedired
o ejecutechmod +w
como un comando de shell en el archivo.Asegúrese de no confundir 'archivo' con 'búfer'. Puede configurar los búferes como de solo lectura y de nuevo con
C-x C-q
(toggle-read-only
). Si tiene permiso para leer, pero no escribir, un archivo, el búfer que obtiene cuando visita el archivo (C-x C-f
ofind-file
) se pondrá en modo de solo lectura automáticamente. Si desea cambiar los permisos de un archivo en el sistema de archivos, quizás comience condired
el directorio que contiene el archivo. La documentación para dired se puede encontrar en info;C-h i (emacs)dired RET
.fuente
inc
. Enseñar a un hombre a pescar ...Lo que encontré es
M-x set-file-modes filename mode
Funcionó en mi caja de Windows Vista. Por ejemplo:
M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
fuente
(set-file-modes FILE 438)
(donde 438 es el equivalente decimal de2#0110110110
o666
).Como lo mencionó alguien más: Mx toggle-read-only funcionaría.
Sin embargo, esto ahora está en desuso y el modo de solo lectura Mx es la forma actual de hacerlo, que se establece en la combinación de teclas Cx Cq.
fuente
CTRL + X + CTRL + Q
fuente
Si solo el búfer (y no el archivo) es de solo lectura, puede usarlo
toggle-read-only
, que generalmente está vinculadoC-x C-q
.Sin embargo, si el archivo en sí es de solo lectura, puede encontrar útil la siguiente función:
La función depende de
unix-output
ytrim-right
:Coloque las funciones en su
~/.emacs.el
, evalúelas (o reinicie emacs). Luego puede hacer que el archivo en el búfer actual se pueda escribir conM-x set-buffer-file-writable
.fuente
set-buffer
exterior delsave-excursion
.subseq
porsubstring
ahora. Eso debería evitar la advertencia.Si está buscando un directorio de archivos (dired), puede usar
Shift + M
un nombre de archivo e ingresarmodespec
los mismos atributos utilizados en elchmod
comando.M modespec <RET>
Vea los otros comandos útiles en archivos en una lista de directorios en http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html
fuente
Probé la solución de Vebjorn Ljosa, y resultó que al menos en mi Emacs (22.3.1) no existe tal función como 'trim-right', que se usa para eliminar una nueva línea inútil al final de la salida de chmod.
La eliminación de la llamada a 'trim-right' ayudó, pero hizo que la fila de estado "rebotara" debido a la nueva línea adicional.
fuente
C-x C-q
es inútil Porque también necesita el permiso para guardar un archivo.Yo uso Spacemacs . Me da una función conveniente para resolver esta pregunta. El código está siguiendo.
Llamo
spacemacs/sudo-edit
para abrir un archivo en emacs e ingresar mi contraseña, puedo cambiar el archivo sin el modo de solo lectura.Puedes escribir una nueva función como
spacemacs/sudo-edit
.fuente