Se um arquivo está definido para o modo somente leitura, como faço para alterá-lo para o modo de gravação e vice-versa no Emacs?
fonte
Se um arquivo está definido para o modo somente leitura, como faço para alterá-lo para o modo de gravação e vice-versa no Emacs?
Mx alternar somente leitura
ou em versões mais recentes do Emacs
Mx modo somente leitura
Na minha caixa do Windows, isso significa Alt-x para exibir o meta prompt e digitar "toggle-read-only" para chamar a função elisp correta.
Se você estiver usando as ligações de teclado padrão,
Cx Cq
(que você lê em voz alta como "Control-X Control-Q") terá o mesmo efeito. Lembre-se, no entanto, considerando que o emacs é essencialmente infinitamente reconfigurável, sua milhagem pode variar.
Seguindo o comentário: observe que o status gravável do buffer não altera a permissão gravável do arquivo. Se você tentar gravar em um arquivo somente leitura , verá uma mensagem de confirmação. No entanto, se você possuir o arquivo, poderá gravar suas alterações sem alterar as permissões no arquivo.
Isso é muito conveniente se você deseja fazer uma alteração rápida em um arquivo sem precisar executar as várias etapas de adicionar permissão de gravação, gravar alterações e remover a permissão de gravação. Costumo esquecer esse último passo, deixando arquivos potencialmente críticos abertos para alterações acidentais mais tarde.
toggle-read-only
apenas alterna o estado somente leitura do buffer que não está no arquivo. Se você deseja alterar o modo do arquivo, usedired
ou executechmod +w
como um comando shell no arquivo.Certifique-se de não confundir 'arquivo' com 'buffer'. Você pode definir buffers como somente leitura e vice-versa com
C-x C-q
(toggle-read-only
). Se você tiver permissão para ler, mas não gravar, um arquivo, o buffer que você obtém quando o visita (C-x C-f
oufind-file
) será colocado no modo somente leitura automaticamente. Se você deseja alterar as permissões em um arquivo no sistema de arquivos, talvez comecedired
no diretório que contém o arquivo. A documentação para dired pode ser encontrada em info;C-h i (emacs)dired RET
.fonte
inc
. O que você querO que eu achei é
M-x set-file-modes filename mode
Funcionou na minha caixa do Windows Vista. Por exemplo:
M-x set-file-modes <RET> ReadOnlyFile.txt <RET> 0666
fonte
(set-file-modes FILE 438)
(onde 438 é o equivalente decimal de2#0110110110
ou666
).Como mencionado por outra pessoa: o Mx toggle-read-only- iria funcionar.
No entanto, isso agora está obsoleto e o modo somente leitura Mx é a maneira atual de fazê-lo, que está definido como Cx Cq keybinding.
fonte
CTRL + X + CTRL + Q
fonte
Se apenas o buffer (e não o arquivo) for somente leitura, você poderá usar o
toggle-read-only
qual normalmente está vinculadoC-x C-q
.Se o próprio arquivo for somente leitura, você poderá encontrar a seguinte função útil:
A função depende
unix-output
etrim-right
:Coloque as funções no seu
~/.emacs.el
, avalie-as (ou reinicie o emacs). Você pode tornar o arquivo no buffer atual gravável comM-x set-buffer-file-writable
.fonte
set-buffer
fora dosave-excursion
.subseq
porsubstring
agora. Isso deve evitar o aviso.Se você estiver procurando em um diretório de arquivos (direcionado), poderá usar
Shift + M
um nome de arquivo e inserirmodespec
os mesmos atributos usados nochmod
comando.M modespec <RET>
Veja os outros comandos úteis nos arquivos em uma lista de diretórios em http://www.gnu.org/s/libtool/manual/emacs/Operating-on-Files.html
fonte
Tentei a solução de Vebjorn Ljosa e, pelo menos no meu Emacs (22.3.1), não existe a função 'trim-right', que é usada para remover uma nova linha inútil no final da saída do chmod.
A remoção da chamada para 'aparar à direita' ajudou, mas fez com que a linha de status "retornasse" por causa da nova linha extra.
fonte
C-x C-q
é inútil. Porque você também precisa da permissão para salvar um arquivo.Eu uso Spacemacs . Dá-me uma função conveniente para resolver esta questão. O código está seguindo.
Eu chamo
spacemacs/sudo-edit
para abrir um arquivo no emacs e insiro minha senha, posso alterar o arquivo sem o modo somente leitura.Você pode escrever uma nova função como
spacemacs/sudo-edit
.fonte